You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

原理说明

标准头文件保护的逻辑是:

  1. 第一次包含头文件时,_MAIN_H_未定义,#ifndef条件成立
  2. 执行#define _MAIN_H_定义宏,避免后续重复包含
  3. 编译头文件内的函数声明等内容
  4. 后续再包含该头文件时,_MAIN_H_已被定义,#ifndef条件不成立,直接跳过#endif之前的内容,防止重复定义错误

内容的提问来源于stack exchange,提问作者Raymond Kasumba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:15:54