[英]Why cant i check if i have included stdlib.h on tdm-gcc compiler?
我正在 C 中编写 header 文件,并且需要stdlib.h
才能工作。 但是,当我检查是否定义了_STDLIB_H
时,预处理器说它不是,即使我包含了文件。 我已经在多个编译器上尝试过它,它适用于大多数但不适用于tdm-gcc
。 我怎样才能解决这个问题?
查看stdlib.h源代码,似乎要在 tdm-gcc 中查找的宏可能是_TR1_STDLIB_H
。
因此,您可以尝试以下操作:
#if defined _STDLIB_H || defined _TR1_STDLIB_H
为了更安全地检查stdlib.h
是否正确包含,您应该检查 C 标准要求文件定义的宏。
我可能遗漏了一些东西,但我在 C 标准中没有看到任何要求stdlib.h
定义_STDLIB_H
。 我认为这可能只是编译器决定防止多重包含的一种常见方式。
尝试类似的东西
#include <stdlib.h>
#ifndef NULL
#error "stdlib.h not included"
#endif
因为 C 标准要求stdlib.h
定义NULL
但这在技术上都不是必需的......我不知道如果找不到您尝试#include
的文件时不会抛出致命错误的预处理器
编辑:
根据 C 标准stdio.h
还定义了NULL
,所以检查EXIT_SUCCESS
或EXIT_FAILURE
可能会更好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.