首页 > 其他分享 >#ifndef #define,#endif 和 #if DEBUG,#endif的用法

#ifndef #define,#endif 和 #if DEBUG,#endif的用法

时间:2023-02-06 14:06:56浏览次数:41  
标签:头文件 定义 包含 DEBUG endif ifndef DisportStatistics


在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。


方法:例如要编写头文件 DisportStatistics_h


在头文件开头写上两行:


#ifndef  

DisportStatistics_h


#define DisportStatistics_h


//一般是文件名的大写


头文件结尾写上一行:#endif这样一个工程文件里同时包含两个test.h时,就不会出现重定义的错误了。


分析:当第一次包含test.h时,由于没有定义

DisportStatistics_h


,条件为真,这样就会包含(执行


)#ifndefDisportStatistics_h
和#endif之间的代码,当第二次包含test.h时前面一次已经定义了DisportStatistics_h,条件为假,#ifndefDisportStatistics_h
和#endif之间的代码也就不会再次被包含,这样就避免了重定义了。主要用于防止重复定义宏和重复包含头文件


#if DEBUG

xxx内容

#endif

含义为如果当前运行模式在debug模式下才会执行内部的xxx内容

标签:头文件,定义,包含,DEBUG,endif,ifndef,DisportStatistics
From: https://blog.51cto.com/u_15952281/6039031

相关文章

  • The POM for XXX is invalid, transitive dependencies (if any) will not be avail
    看到这篇文章后不用再对标题这个关键字搜索其它答案了,因为其它答案都不完整,踩了很多坑。出现上述提示后,需要用maven的debug模式再package下才会显示真正的原因,标题的原因......
  • phpstorm配置debug环境
    phpstorm配置debug环境众所周知,在渗透测试进行代码审计的时候,往往要审计代码的执行过程,亦或是在开发php项目的时候,需要了解代码的执行逻辑,并从大量的代码跳转执行中......
  • VS2022使用WSL调试程序时卡在下载vsdebugger-已解决
    注:如果是安装一半以为卡了把控制台关了。后来使用WSL启动一直提示报错,但也不能像初次启动那样出现安装VisualStudio调试器的提示下述方法也能解决,缘由是删了子系统重装发......
  • Challenges of Debugging Optimized x64 Code
    Learn  BlogArchive  NtdebuggingBlog 使用英语阅读保存  ChallengesofDebuggingOptimizedx64Code项目2009/01/0923分钟可看完If......
  • 开启并分析DNS debug日志
    开启DNS调试日志,记录DNS查询日志  当文件达到20M后,会自动重写新日志DNSDeugLog,使用如下脚本进行分析脚本:##################################################......
  • 8086汇编debug命令
    8086汇编debug命令8086cpu的debug常用debug命令:r:查看当前寄存器状态和值,也可以显示下一条预备执行的指令rax123f:2000:更改指定寄存器内的数值为偏移地址上的数值d:查看芯片......
  • phpstorm xdebug设置
    填写上配置的url地址即可,端口如果不是80就自己填写为自己设置的端口最后打开顶部调试模式startlisiteningforphpdebug设置断点访问地址添加上?XDEBUG_SESSION......
  • idea测试类没有运行按钮,右键没有Run、Debug
    问题  原因编写测试类错误解决办法选择合适的路径 ......
  • 【悲伤的Debug日志】Windows Anaconda 运行报错 ImportError: DLL load failed while
    今天在Windows10上安装Anaconda(Anaconda|AnacondaDistribution)。首次安装选择了“在所有用户上安装”,发现进入下一步时无法勾选“将Anaconda加入PATH环境变......
  • OutputDebugString在X64出现异常 0xC0000005
    xxxxx.exe中的0x78ebb746处最可能的异常:0xC0000005:读取位置0xffffffffffffffff时发生访问冲突对应位置指令0000000078EBB7460FAE8100010000fxsave......