C 전처리 기가 함수 (매크로가 아님)가 선언되었는지 여부를 확인할 수 있습니까? 나는 다음을 시도했지만 작동 표시되지 않습니다함수가 C 전 처리기로 선언되었는지 확인 하시겠습니까?
#include <stdio.h>
int main(void)
{
#if defined(printf)
printf("You support printf!\n");
#else
puts("Either you don't support printf, or this test doesn't work.");
#endif
return 0;
}
저는이 이유에 대해 매우 흥미가 있습니다. 작업하고있는 libs는 일관성이 있어야합니다. 예를 들어 보겠습니다. printf가없는 stdio.h가 없으며 먼 미래에 printf가 제거 될 수도 있습니다. 이제 대체 방법에 대해 알지 못할 것입니다. 호출 될 – flokra
필자는 printf가 아닌 모든 함수 이름을 생각하고 있습니다. 하지만, 거기에 함수가 있는지 알고 싶다면 그냥 컴파일러 오류로 알 수 있습니다 :-) – paxdiablo
필자의 주요 인센티브는 bcopy() 또는 arc4random()과 같은 함수를 검사하는 것입니다 (크로스 플랫폼 프로그램을 작성할 때) , 항상 정의되지는 않습니다. – Michael