日期:2014-05-16  浏览次数:20649 次

ubuntu中预编译出现错误
C/C++ code
#define __USE_GNU//第一行
#include<stdio.h>
int main()
{
#ifdef __USE_GNU
    printf("hello");
#endif
    return 0;

}

如果把这段程序在ubuntu中运行,尽然没有printf输出,但是在windows平台上面有!这是什么缘故,难道是编译器的原因?
还是__USE_GNU是ubuntu的关键字?求解释

------解决方案--------------------
哎,__USE_GNU是glibc的内部宏,会影响stdio等来源于glibc的判断

建议任何用户代码(除非为了检测glibc而用,如编译器系统头文件等)都不要使用



另外你可以尝试把#define __USE_GNU放#include<stdio.h>后面,我觉得就一样了