为什么我不能检查是否在tdm-gcc编译器中包含了stdlib.h?

问题描述 投票:0回答:2

im在c中编写头文件,需要stdlib.h才能起作用。但是当我检查是否定义了_STDLIB_H时,预处理器说即使我包含了文件也没有。我已经在多种编译器上尝试过了,在大多数编译器上都可以用,但在tdm-gcc上却没有。我该如何解决?

谢谢。

c c-preprocessor
2个回答
0
投票

[查看stdlib.h源代码,似乎要在tdm-gcc中查找的宏可能是_TR1_STDLIB_H。因此,您可以尝试以下操作:

#ifdef _STDLIB_H || _TR1_STDLIB_H

0
投票

为了更安全地检查stdlib.h是否正确包含,应检查C标准需要文件定义的宏。

我可能会遗漏某些东西,但是我没有看到C标准中对stdlib.h定义_STDLIB_H的任何要求。我认为这可能只是编译器决定防止多重包含的一种常见方式。

尝试类似

#include <stdlib.h>

#ifndef NULL
#error "stdlib.h not included"
#endif

因为stdlib.h定义NULL的C标准要求] >>

但是从技术上讲,这都不是必需的...我不知道如果预处理器找不到要尝试#include的文件,也不会引发致命错误。>

© www.soinside.com 2019 - 2024. All rights reserved.