반응형

C 135

X11 이벤트 루프를 정상적으로 종료하려면 어떻게 해야 합니까?

X11 이벤트 루프를 정상적으로 종료하려면 어떻게 해야 합니까? 찾은 거의 모든 튜토리얼에서 이벤트 루프에 대해 이 작업을 수행하도록 지시합니다. XEvent event; while (true) { XNextEvent(display, &event); switch (event.type) { case Expose: printf("Expose\n"); break; default: break; } } 그러나 X를 클릭하여 프로그램을 닫으면 이 메시지가 표시됩니다. XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" after 10 requests (10 known processed) with 0 events remaining. 예..

programing 2023.07.10

GCC의 __attribute__(...) 구문이 이중 괄호를 사용하는 이유는 무엇입니까?

GCC의 __attribute__(...) 구문이 이중 괄호를 사용하는 이유는 무엇입니까? GCC 구문에 대한 설명서는 속성이 이중 괄호로 둘러싸야 함을 나타내지만, 이 설계 결정에 대한 근거를 제공하지는 않습니다. GCC의 설계자들이 이것을 요구하게 된 실질적인 이유는 무엇이었을까요?전처리기가 이중 괄호를 처리하는 것과 관련이 있습니까?다른 컴파일러에서 제거하는 것을 더 쉽게 하기 위해.만약 당신이 휴대용 코드를 가지고 있다면, 당신은 다른 컴파일러들을 위해 그것들을 제거해야 합니다, 그래서 당신은 그렇게 합니다. #ifndef __GNUC__ #define __attribute__(x) #endif 문제는 속성에 다양한 수의 인수가 있고 여러 속성을 하나로 결합할 수 있다는 것입니다.__attribu..

programing 2023.06.30

하향식 및 상향식 프로그래밍

하향식 및 상향식 프로그래밍 왜 우리는 C와 같은 언어는 하향식이고 자바나 C++와 같은 OOP 언어는 상향식이라고 합니까?이 분류가 소프트웨어 개발에 중요한 영향을 미칩니까?"하향식" 접근 방식은 문제를 높은 수준으로 정의하고 하위 문제로 세분화합니다. 그런 다음 코드화하기 쉽고 명확한 조각으로 내려갈 때까지 반복적으로 수행합니다.이것은 종종 프로그래밍의 "기능적 분해" 스타일과 연관되지만 그럴 필요는 없습니다. "바텀업" 프로그래밍에서는 더 큰 프로그램이 되기 위해 구성할 수 있는 하위 수준의 도구를 식별합니다. 실제로 거의 모든 프로그래밍은 여러 가지 접근 방식을 사용하여 이루어집니다.객체 지향 프로그래밍에서는 일반적으로 도메인 객체를 식별하여 문제를 세분화합니다(상단 하향 단계). 그런 다음 최종..

programing 2023.06.15

malloc에 대한 래퍼 함수를 만들고 C에서 무료로 사용할 수 있습니다.

malloc에 대한 래퍼 함수를 만들고 C에서 무료로 사용할 수 있습니다. 다음에 대한 래퍼 함수를 만들려고 합니다.free그리고.mallocC에서 메모리 누수를 알려줍니다.이 기능들을 신고하는 방법을 아는 사람이 있습니까? 그래서 제가 전화할 때.malloc()그리고.free()표준 lib 함수가 아닌 내 사용자 정의 함수를 호출합니까?몇 가지 옵션이 있습니다. GLIBC 관련 솔루션(대부분 Linux).컴파일 환경이glibc와 함께gcc선호되는 방법은 말록 훅을 사용하는 것입니다.사용자 정의를 지정할 수 있을 뿐만 아니라malloc그리고.free또한 스택의 반송 주소로 발신자를 식별합니다. POSIX 관련 솔루션.정의malloc그리고.free실행 파일의 원래 할당 루틴에 대한 래퍼로, libc에서 버..

programing 2023.06.15

C와 C++ 표준 사이의 관계는 무엇입니까?

C와 C++ 표준 사이의 관계는 무엇입니까? 저는 이 답변을 쓰고 있었고 http://en.cppreference.com/w/cpp/string/byte/tolower#Parameters 에서 인용했습니다. 서명되지 않은 문자로 표시할 수 없으며 EOF와 같지 않으므로 동작이 정의되지 않았습니다. 제가 이 문구를 추가한 편집을 검사하러 갔을 때, 저는 저자의 논평을 발견했습니다. C997.4/1에 따라 ctype.h 함수와 함께 음수 부호 문자를 사용할 수 없습니다. 저자는 C++ 문서에서 C99 표준을 인용하고 있습니다.그것이 유효합니까?저는 C++ 표준에서 이 함수의 정의에 대해 아무것도 찾을 수 없었기 때문에 그것이 유효하다고 가정해야 합니다. 하지만 이것은 두 가지 이유로 저와 관련이 있습니다. ..

programing 2023.06.10

경고/오류 "함수 선언은 프로토타입이 아닙니다"

경고/오류 "함수 선언은 프로토타입이 아닙니다" 제가 만든 도서관이 있는데 파일 mylib.c: #include int testlib() { printf("Hello, World!\n"); return (0); } mylib 파일.h: #include extern int testlib(); 프로그램에서 다음 라이브러리 함수를 호출하려고 했습니다. 파일 myprogram.c: #include int main (int argc, char *argv[]) { testlib(); return (0); } 이 프로그램을 컴파일하려고 하면 다음 오류가 나타납니다. myprogram.c:1에서 포함된 파일mylib.h:2 경고: 함수 선언은 프로토타입이 아닙니다. 사용하고 있는 것:gcc (GCC) 3.4.5 200..

programing 2023.01.13

C 데이터형은 어떻게 "대부분의 컴퓨터에서 직접 지원"됩니까?

C 데이터형은 어떻게 "대부분의 컴퓨터에서 직접 지원"됩니까? 저는 K&R의 "The C Programming Language"를 읽고 있는데 우연히 다음과 같은 문구를 접하게 되었습니다[개요, 페이지 3]. C가 제공하는 데이터 유형 및 제어 구조는 대부분의 컴퓨터에서 직접 지원되므로 자체 포함 프로그램을 구현하는 데 필요한 런타임 라이브러리는 매우 작습니다. 굵은 글씨는 무슨 뜻입니까?컴퓨터에서 직접 지원하지 않는 데이터 유형 또는 제어 구조의 예가 있습니까?네, 직접 지원되지 않는 데이터 유형이 있습니다. 대부분의 임베디드 시스템에는 하드웨어 부동소수점 유닛이 없습니다.이렇게 코드를 작성하면 float x = 1.0f, y = 2.0f; return x + y; 다음과 같이 변환됩니다. unsign..

programing 2022.12.19

C를 사용하여 어레이 반환

C를 사용하여 어레이 반환 저는 C에 비교적 익숙하지 않기 때문에 어레이 처리 방법에 대한 도움이 필요합니다.자바 프로그래밍에서 온 저는 이렇게 말하는 것에 익숙합니다.int [] method()어레이를 반환하기 위해 사용합니다.그러나 C에서는 어레이를 반환할 때 포인터를 사용해야 한다는 것을 알게 되었습니다.저는 초보 프로그래머로서 많은 포럼을 살펴보았는데도 전혀 이해할 수 없습니다. 기본적으로 C에 char 배열을 반환하는 메서드를 작성하려고 합니다.메서드(return Array)에 어레이를 제공합니다.이전 배열에서 새 배열을 만들고 포인터를 반환합니다.이것을 기동하는 방법이나, 포인터가 어레이로부터 송신되었을 때에 읽어내는 방법에 대해서, 도움이 필요합니다.이에 대해 설명해 주시면 감사하겠습니다. ..

programing 2022.12.19

C에서 *ptr += 1과 *ptr++ 사이의 차이

C에서 *ptr += 1과 *ptr++ 사이의 차이 이제 막 C를 공부하기 시작했는데, 함수의 파라미터로서 포인터에 포인터를 건네는 예를 하나 들 때 문제가 발견되었습니다. 샘플 코드는 다음과 같습니다. #include #include #include int* allocateIntArray(int* ptr, int size){ if (ptr != NULL){ for (int i = 0; i 할당+= 주제에 대한 자세한 내용은 이 페이지를 참조하십시오. 식을 구문 분석할 때, 일부 행에 나열된 연산자..

programing 2022.11.10

시간 간격을 C로 측정하려면 어떻게 해야 하나요?

시간 간격을 C로 측정하려면 어떻게 해야 하나요? 시간을 C로 측정하고 싶은데, 파악이 어려운데, 제가 원하는 것은 다음과 같습니다. 타이머를 켜다 메서드를 실행하다. 타이머를 멈추다 소요된 시간을 보고한다(적어도 마이크로 정밀도까지). 어떤 도움이라도 주시면 감사하겠습니다. (mingw를 사용하여 창으로 컴파일 중)1마이크로초의 분해능을 제공하는 고해상도 타이머는 시스템마다 다르므로 OS 플랫폼마다 다른 방법을 사용해야 합니다.다음 문서에서 아래 함수를 기반으로 크로스 플랫폼 C++ 타이머 클래스를 구현합니다. [안송호 - 고해상도 타이머][1] 창문들 Windows API windows windows windows windows windows windows windows windows windows ..

programing 2022.11.01
반응형