c99

    2

    1답변

    인수를 가변 인수 매크로로 바꾸려면 어떻게해야합니까? 예를 들어, 나는 #define REVERSE(...) ??? REVERSE(A,B,C) // expands to C,B,A 내 목표는 앞면과 뒷면 인수를 분리하는 것입니다 싶습니다는 #define APPLY(FUN,...) FUN(__VA_ARGS__) #define FRONT(FIRST,.

    3

    3답변

    malloc() 및 free()을 사용하여 메모리를 할당하는 방법을 알고 있지만 표준 C 함수로 메모리가 얼마나 남아 있는지도 확인할 수 있으므로 주기적으로 호출하여 코드에 메모리 누수가 없는지 확인할 수 있습니다. 내가 생각할 수있는 유일한 점은 오류를 반환 할 때까지 무한 루프로 malloc(1)을 호출하는 것이지만 더 효율적인 방법은 없을 것입니다.

    4

    1답변

    구조체를 업데이트하고 인터럽트를 비활성화하는 함수가 있습니다. bool readBuffer() { __disable_irq(); rb->reader += 1; // Just an example __enable_irq(); return true; } 인터럽트가 비활성화되어 있기 때문에 구조의 값을 업데이트하는

    2

    1답변

    위키 백과에서 순환 버퍼의 사용 가능한 공간을 확인하려면 모듈로 연산이 필요합니다. 그러나 내 구현 단순히 수행 static size_t bytes_used(const ringbuffer* rb) { int d = rb->writer - rb->reader; if (d >= 0) return d; return rb->size

    0

    1답변

    VS C 컴파일러는 C99를 한 번도 해 본 적이 없기 때문에 Windows 용 gcc (끔찍한) 포트를 사용하여 데스크탑 용 원시 코드 C 개발을 항상 해왔습니다. 어쨌든, 나는 WINRT의 "원시 코드"플랫폼이 다른 컴파일러의 코드를 허용 할 것인지 또는 VS를 사용해야 할 것인지 궁금합니다. 내가 WINRT를 말할 때 내가 OS를 API를하지 말은 .

    4

    1답변

    I 런타임에서 결정된 길이를 갖는 배열이 일반적으로 어레이를 선언함으로써 가능하다는 것을 알고 char buf[len]; 하고 난 화합물 litral으로 배열을 선언하고 포인터의 중간에 할당 할 수 있음을 알고 char *buf; .... buf = (char[5]) {0}; 그러나 두 가지를 결합해도 작동하지 않습니다 (표준에서는 허용되지 않습

    5

    2답변

    를 추가하지 않고 C에서 열거 이름의 고유성을 확인합니다 typedef enum { A_ONE, A_TWO, } A; typedef enum { B_ONE, B_TWO, } B; 가 있는가 C에서 이것을하는 더 좋은 방법은?

    6

    4답변

    나는 문자열을 인자로 받아야하는 많은 함수를 가지고 있는데, 이것들은 char*을 사용하지만, 바이트 배열을 기대하는 모든 함수는 또한 char*을 사용한다. 문제는 null-terminator를 찾을 수 없기 때문에 모든 종류의 오버플로를 일으키는 문자열 배열 함수에 바이트 배열을 전달하는 실수를 쉽게 할 수 있다는 것입니다. 대개 어떻게 이런 경향이 있

    1

    2답변

    작업중인 코드를 컴파일하는 데 문제가 있습니다. 최근 C 언어를 배우기로 결정하여 저급 언어를 더 잘 이해할 수있게되었습니다. for 루프를 만들려고했으나 c99 mode없이 루프 내에서 선언을 할 수 없다는 오류를 반환합니다. Settings>Compiler>Other Settings에 들어가서 -std=c99을 추가했지만 여전히 작동하지 않습니다. 이

    0

    1답변

    부호있는 짧은 부호있는 부호있는 부호로 변환하려면 항상 32768을 뺍니다. 가장 빠르지 않습니까? 더 빠른 방법이 있습니까?