如何解决C语言头文件中的error: unterminated #ifndef错误?
解决C语言头文件"unterminated #ifndef"错误
错误原因分析
你的头文件保护逻辑完全错误:
- 用
#ifndef _MAIN_H_开启条件后,紧接着写了#ifdef _MAIN_H_,这两个条件互斥——当_MAIN_H_未定义时,#ifndef条件成立,但此时#ifdef条件不成立,函数声明不会被包含;更关键的是,#ifndef没有对应的#endif闭合,所以编译器报出"unterminated #ifndef"错误。
正确的头文件写法
将头文件代码修改为标准的头文件保护结构:
#ifndef _MAIN_H_ #define _MAIN_H_ int now(void); #endif
原理说明
标准头文件保护的逻辑是:
- 第一次包含头文件时,
_MAIN_H_未定义,#ifndef条件成立 - 执行
#define _MAIN_H_定义宏,避免后续重复包含 - 编译头文件内的函数声明等内容
- 后续再包含该头文件时,
_MAIN_H_已被定义,#ifndef条件不成立,直接跳过#endif之前的内容,防止重复定义错误
内容的提问来源于stack exchange,提问作者Raymond Kasumba
相关产品推荐
相关产品推荐

