im在c中编写头文件,需要stdlib.h才能起作用。但是当我检查是否定义了_STDLIB_H时,预处理器说即使我包含了文件也没有。我已经在多种编译器上尝试过了,在大多数编译器上都可以用,但在tdm-gcc上却没有。我该如何解决?
谢谢。
[查看stdlib.h源代码,似乎要在tdm-gcc中查找的宏可能是_TR1_STDLIB_H
。因此,您可以尝试以下操作:
#ifdef _STDLIB_H || _TR1_STDLIB_H
为了更安全地检查stdlib.h
是否正确包含,应检查C标准需要文件定义的宏。
我可能会遗漏某些东西,但是我没有看到C标准中对stdlib.h
定义_STDLIB_H
的任何要求。我认为这可能只是编译器决定防止多重包含的一种常见方式。
尝试类似
#include <stdlib.h>
#ifndef NULL
#error "stdlib.h not included"
#endif
因为 但是从技术上讲,这都不是必需的...我不知道如果预处理器找不到要尝试stdlib.h
定义NULL
的C标准要求] >>#include
的文件,也不会引发致命错误。>