#ifndef #defin #endif的用法:
1、 当有两个c文件,并且两个c文件都include了同一个头文件,在编译为同一个可运行文件时就会产生大量声明冲突。
所以就需要将头文件的内容都放在#ifndef和#enfid中,以避免所调用的头文件被多个文件引用。
一般格式为:
#ifndef<标识>
#define<标识>


#endif<标识>

每个头文件的“标识”都应该是唯一存在的。
标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线。例如:stdio.h
#ifndef<STDIO_H>
#define<STDIO_H>


#endif<STDIO_H>
2、在#ifndef中定义变量中出现的问题
#ifndef<标识>
#define<标识>

int i;

#endif<标识>

在C中会成功编译,而在vc中会出现i重复定义的错误。

错误原因(猜测):C和C++语言链接结果不同,可能在进行编译时,C++将全局变量默认为强符号,所以接连出错。C语言按照是否初始化进行强弱判断。

解决方法:把源程序文件的文件扩展名改为.c,vc将按照C语言的语法对源程序进行编译,而不是C++。在C语言中,若是遇到多个int i,则自动默认为其中一个是定义,其他都为声明。

摘抄自:https://wenku.baidu.com/view/fa9f4f1614791711cc79178b.html

#ifndef #defin #endif的用法相关推荐

  1. c/c++头文件中#ifndef/#define/#endif的用法

    想必很多人都看过"头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用".但是是否能理解"被重复引用"是什么意思?头文件被重复 ...

  2. #ifndef.#define, #endif 的用法

    文件中的#ifndef.#define, #endif 很关键,是为了避免多重包含,比如如果两个C文件同时包含同一头文件,那么就会出现问题,所以使用这种方法可以有效避免这种情况. 一般用法: 以add ...

  3. #ifndef#define#endif的用法

    你所遇到的这几个宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是"条件编译&qu ...

  4. c++语言中ifndef和endif的用法

    1.#ifndef "if not defined"的简写,是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等.实际上确切的说这应该是预处理功能中三种 ...

  5. #ifndef#define#endif的用法(整理)

    1.头文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题 ...

  6. #ifdef,#else,#endif,#if用法详解(转)

    #ifdef,#else,#endif,#if用法详解(转) 2011-04-22 10:11 预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理 ...

  7. 条件编译用法(#ifndef #define #endif#else)

    1. 文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题 ...

  8. #if, #ifdef, #ifndef, #else, #elif, #endif的用法

    #ifdef的用法 灵活使用#ifdef指示符,我们可以区隔一些与特定头文件.程序库和其他文件版本有关的代码. 代码举例:新建define.cpp文件 #include "iostream. ...

  9. C++ 头文件 #ifndef #define #endif 作用及用法

    为什么要加定义 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声 ...

最新文章

  1. 在Homebrew 发布程序
  2. 【行业趋势】国内这10个AI研究院,你想好去哪个了吗?
  3. Trie 树——搜索关键词提示 1
  4. 官宣!又一所新大学来了!
  5. Wycieczki 线性代数
  6. C语言随笔小算法:创建双向链表
  7. .net中Task.WaitAll和WaitAny同步的等待Task完成
  8. Linux/Windows 文件交互读取转义字符变换
  9. 喜获Arctic Code Vault Contributor勋章,北极代码库贡献者
  10. 地类图斑代码大全_全国第二次土地调查土地分类代码含义.doc
  11. 计算机网络:网络安全(电子邮件安全)
  12. 编程入门——计算机硬件介绍
  13. 2014新生暑假个人排位赛06 D. 爱好和平
  14. 一文告诉你IT行业什么方向赚钱,需求多
  15. 杭州治堵有“智慧” 阿里云数加激活城市大脑
  16. 网站SEO优化工具大全推荐-免费SEO优化工具
  17. 2021年全球氨基酸表面活性剂市场规模大约为47亿元(人民币),预计2028年将达到105亿元
  18. Connect Four四子棋c++程序 - 善后处理(3)
  19. stata判断变量是不是唯一标识的命令?
  20. 深度学习 神经网络 神经元 单层神经网络的实现

热门文章

  1. Quantopian Risk Model (QRM)
  2. php 正则保留数字和,只保留汉字,字母,数字正则
  3. C语言字符类型输入方式选择
  4. python使用微信设置-用Python玩微信跳一跳黑科技详细使用教程
  5. 文件目录自动生成工具--Dir Tree Noter
  6. python爬取凤凰新闻网_爬取网易,搜狐,凤凰和澎湃网站评论数据,正负面情感分析...
  7. Gitee 图床被屏蔽后,我搭建了一个文件系统并封装成轮子开源
  8. 还我一个干净的Mac OS(如何彻底删除不需要的App)
  9. 【烈日炎炎战后端】 数据结构(0.7万字)
  10. 华为Mate40系列国行参数价格曝光