首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能检查一下我是否在tdm-gcc编译器中包含了stdlib.h?

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

Stack Overflow用户
提问于 2020-05-24 21:09:57
回答 2查看 301关注 0票数 0

我正在用C编写一个头文件,需要stdlib.h才能工作。但是,当我检查是否定义了_STDLIB_H时,预处理器说它没有定义,即使我包含了文件。我已经在多个编译器上尝试过它,在大多数编译器上,但在tdm-gcc上不起作用。我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-24 21:35:05

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

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

试着做些像

代码语言:javascript
复制
#include <stdlib.h>

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

因为C标准需要stdlib.h定义了NULL

但这些在技术上都不应该是必要的..。我不知道有一个预处理程序,如果它找不到试图#include的文件,它就不会抛出致命的错误。

编辑:

根据C标准,stdio.h也定义了NULL,所以最好检查一下EXIT_SUCCESSEXIT_FAILURE

票数 0
EN

Stack Overflow用户

发布于 2020-05-24 21:37:49

看一看stdlib.h源代码,似乎可以在tdm中查找宏-gcc可能是_TR1_STDLIB_H

所以你可以尝试这样的方法:

代码语言:javascript
复制
#if defined _STDLIB_H || defined _TR1_STDLIB_H
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61992468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档