许多头文件中都有#ifndef XXX_H #define XXX_H #endif XXX_H.请问我什么要这么定义?XXX_H有是什么东西? [问题点数:20分,结帖人lieyu063]

Bbs1
本版专家分:20
结帖率 93.81%
Bbs2
本版专家分:118
Bbs4
本版专家分:1108
Blank
黄花 2004年10月 Java大版内专家分月排行榜第二
Bbs1
本版专家分:20
Bbs2
本版专家分:232
Bbs1
本版专家分:74
Bbs1
本版专家分:35
Bbs2
本版专家分:291
Bbs1
本版专家分:95
Blank
黄花 2005年9月 Linux/Unix社区大版内专家分月排行榜第二
2005年5月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2005年8月 Linux/Unix社区大版内专家分月排行榜第三
2005年6月 Linux/Unix社区大版内专家分月排行榜第三
Bbs1
本版专家分:65
Bbs1
本版专家分:13
单片机C语言头文件 #ifndef/#define/#endif使用详解
本文主要介绍了为<em>什么</em>在<em>头文件</em>中使用#<em>ifndef</em>/#<em>define</em>/#<em>endif</em>。
C/C++头文件中的ifndef/define/endif的作用有哪些?
功能如果一个项目中存在两个C文件,而这两个C文件都include(包含)了同一个<em>头文件</em>,当编译时,这两个C文件要一同编译成一个可运行文件,可能会产生大量的声明冲突,而解决办法是把<em>头文件</em>的内容都放在#<em>ifndef</em>和<em>endif</em>中,一般格式如下:#<em>ifndef</em>&amp;lt;标识&amp;gt;#<em>define</em>&amp;lt;标识&amp;gt;......#<em>endif</em>解释为:当标识没有由#<em>define</em><em>定义</em>过时,则<em>定义</em>标识。&amp;lt;标识...
定义头文件ifndef/define/endif的作用
例如:要编写<em>头文件</em>test.h          在<em>头文件</em>开头写上两行:           #<em>ifndef</em> _TEST_H           #<em>define</em> _TEST_H//一般是文件名的大写          ············          ············          <em>头文件</em>结尾写上一行:           #endi
C++头文件中加#ifndef #define #endif的作用浅析
通常,在做一个项目工程时,往往有很多很多的文件,而由于面向对象的特性,为实现模块化和编写出稳定的、可读性高、易维护的、健壮的代码,往往将类封装起来。假如某个<em>头文件</em>被多个文件包含使用,当把这些文件编译链接成一个可执行文件时,就会出现大量重复<em>定义</em>的错误,而在<em>头文件</em>中加#<em>ifndef</em> #def #<em>endif</em>能避免<em>头文件</em>的重<em>定义</em>。 例:如编写<em>头文件</em>complex.h 在<em>头文件</em>开头写上两行
说说条件编译#ifndef,#define,#endif
<em>头文件</em>被多次引用导致重复<em>定义</em>C++编程中经常会遇到的一个问题,就是由于<em>头文件</em>被多次include而导致的符号重<em>定义</em>出错,下面就聊聊这个问题。 贴出一组导致重复引用导致出错的demo//head.h <em>头文件</em>#<em>ifndef</em> HEAD_H #<em>define</em> HEAD_H#include using namespace std;int g_number; void func1();#
C语言中#ifdef,#ifndef和#endif的作用
1、用于注释掉一段代码 我们自己编写程序的时候,需要看到一系列的调试代码,但是发给客户的时候,客户可不希望看到<em>什么</em><em>什么</em>OK的代码,所以我们希望能很容易地注释掉这段代码。 这时需要用到预处理指令 #ifdef 和 #<em>endif</em> : #include &amp;lt;stdio.h&amp;gt; #<em>define</em> CONFIG_DEBUG int main(){ FILE *fp; fp=fo...
浅谈#ifndef,#define,#endif的作用和用法
文件中的#<em>ifndef</em>.#<em>define</em>, #<em>endif</em> 很关键,是为了避免多重包含,比如如果两个C文件同时包含同一<em>头文件</em>,那么就会出现问题,所以使用这种方法可以有效避免这种情况。一般用法:以add.h为例#<em>ifndef</em> _ADD_H_ #<em>define</em> _ADD_H_ //在这里包含add.h的类<em>定义</em>及变量和函数的声明 比如函数声明:int add(int a ,int b); //分号是必须...
如何解决头文件重复包含和宏的重复定义问题:用#ifndef 、#define、#endif
如何解决<em>头文件</em>重复含问题   #<em>ifndef</em> 、#<em>define</em>、#<em>endif</em>的作用是: (1)防止宏的重复<em>定义</em> (2)防止有文件的重复包含 #<em>ifndef</em> _A_H_ #<em>define</em> _A_H_ 。。。。。 #<em>endif</em>  ...
#pragma once 与#ifndef,#define,#endif的差别 、重复定义等相关问题
.cpp文件是一个编译单元,obj文件是编译的输出文件,链接是将所有地obj文件链接起来组成一个exe。链接过程中如果有不同的cpp文件中包含相同的函数名,变量名(注意不包括变量的引用、函数的声明、以及static函数和变量),链接将会报重复<em>定义</em>的错误,很多时候如果把函数和变量的<em>定义</em>写在.h文件,多个cpp包含此.h文件,就极可能会发生这样的错误,所以应该实现写在.cpp中,在.h中声明。有一种情
定义(#ifndef+#define+#endif)的作用
本文介绍#<em>ifndef</em>、#<em>define</em>、#<em>endif</em>三者一起使用的宏<em>定义</em>的作用。在<em>头文件</em>中,我们经常会在<em>头文件</em>中见到#<em>ifndef</em>、#<em>define</em>、#<em>endif</em>三者一起使用的宏<em>定义</em>。例如,在<em>头文件</em>xxx.h中(此样式可参考):#<em>ifndef</em> __XXX_H__ #<em>define</em> __XXX_H__ #include &amp;lt;iostream&amp;gt; // 其他代码 #<em>endif</em>使用#<em>ifndef</em>...
什么头文件都有 #ifndefine #define #endif
<em>许多</em>人都知道,下面的语句把.h文件包括起来,目的是为了避免重复包含: #<em>ifndef</em>   _my_head_file_h #<em>define</em>   _my_head_file_h ... ... ... #<em>endif</em> 问题是:<em>头文件</em>一般都是变量、函数的声明,重复声明并没有问题啊! 例1: typedef   void   myfunction(); typed
C#预处理指令中if ifdef ifndef
凡是以"#"开头的均为预处理命令 1. 第一种形式: #ifdef 标识符  程序段1  #else  程序段2  #<em>endif</em>  它的功能是,如果标识符已被 #<em>define</em>命令<em>定义</em>过则对程序段1进行编译;否则对程序段2进行编译. 2. 第二种形式:  #<em>ifndef</em> 标识符  程序段1  #else  程序段2  #<em>endif</em>  与第一种形式的区别是将"ifde
头文件中#ifndef/define/endif的作用
防止<em>头文件</em>被重复引用,是格式如下:#<em>ifndef</em> _GAMEDATA_H_ #<em>define</em> _GAMEDATA_H_ class GameData { public: protected: private: }; #<em>endif</em>// 如果使用以上格式,在别的<em>头文件</em>或实现文件中重复包含是不会报错的,如下所示: #include "GameData.h" #include "GameData.h" #in
条件编译 #ifndef _HEAD_H...中下划线的理解!
条件编译 #<em>ifndef</em> _HEAD_H...中下划线的理解!一、下划线“__”属于编程风格的内容,对程序没有影响。不用下划线也可以,用几个下划线也由个人习惯。二、其实质是一个宏名。由此我们可以防止发生重复<em>定义</em>或声明。假设你的<em>头文件</em>名为head.h,根据习惯,我们声明一个宏HEAD_H,对应这个<em>头文件</em>,在<em>头文件</em>中开始的地方和结尾的地方加上 对HEAD_H的声明和判断,<em>头文件</em>Head.h如下: #
LINUX学习第三天(ifndef define endif的用法)
文件中的#<em>ifndef</em>头件的中的#<em>ifndef</em>,这是一个很关键的<em>东西</em>。比如你有两个C文件,这两个C文件都include了同一个<em>头文件</em>。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把<em>头文件</em>的内容都放在#<em>ifndef</em>和#<em>endif</em>中吧。不管你的<em>头文件</em>会不会被多个文件引用,你都要加上这个。一般格式是这样的:#<em>ifndef</em> &amp;lt;标识&amp;gt; #<em>define</em> &amp;l...
ifdef、ifndef使用规则,FPGA开发工具分享
verilog中使用ifdef/else/<em>endif</em>和<em>ifndef</em>/else/<em>endif</em>的语句进行预编译处理,可以对指定的程序段进行编译,以便于在不同工程模式下灵活的切换代码,实现不同的功能需求。代码示意如下: ifdef/else 如果<em>定义</em>了宏<em>定义</em>STRING,则综合工具会编译code_0段,若未<em>定义</em>STRING,则编译code1段。 `ifdef STRING code_0; `e
STM32头文件学习 SYS.H
感谢中国电子论坛的我爱你的吻 /*sys.h   今天我们来讲讲这个<em>头文件</em>*/ #<em>ifndef</em> __SYS_H   //头件的中的#<em>ifndef</em>,这是一个很关键的<em>东西</em>。比如你有两个C文件,这两个C文件都include了同一个<em>头文件</em>。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把<em>头文件</em>的内容都放在#<em>ifndef</em>和#<em>endif</em>中吧。不管你的<em>头文件</em>会不
Verilog中条件编译命令 `ifdef、`else、`endif 用法之1
一般情况下,Verilog HDL源程序中所有的行都参加编译。但是有时候希望对其中的一部份内容只有在条件满足的时候才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足条件时对一组语句进行编译,当条件不满足时则对另外一组语句进行编译。 条件编译命令的几种形式: (1)`ifdef宏名(标识符)         程序段1        `else    
单片机中#ifndef,#define用法
文件中的#<em>ifndef</em>  头件的中的#<em>ifndef</em>,这是一个很关键的<em>东西</em>。比如你有两个C文件,这两个C文件都include了同一个<em>头文件</em>。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。  还是把<em>头文件</em>的内容都放在#<em>ifndef</em>和#<em>endif</em>中吧。不管你的<em>头文件</em>会不会被多个文件引用,你都要加上这个。一般格式是这样的:  #<em>ifndef</em>   #<em>define</em>  
c++中类模板、hpp文件、与预编译相关的#ifndef#define#endif 相关
*.hpp文件: 1、是Header   Plus   Plus 的简写。 2、与*.h类似,hpp是C++程序<em>头文件</em> 。 3、是VCL专用的<em>头文件</em>,已预编译。 4、是一般模板类的<em>头文件</em>。 5、一般来说,*.h里面只有声明,没有实现,而*.hpp里声明实现<em>都有</em>,后者可以减少.cpp的数量。 6、*.h里面可以有using   namespace   std,而*.h
INT64_C的含义
其中<em>定义</em>如下: #<em>ifndef</em> INT64_C #<em>define</em> INT64_C(c) (c ## LL) #<em>define</em> UINT64_C(c) (c ## ULL) #<em>endif</em> 所以意思就是
Objective--C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)
预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、<em>定义</em>宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句
C++中避免头文件冲突之#ifndef
在<em>头文件</em>中使用#ifdef和#<em>ifndef</em>是非常重要的,可以防止双重<em>定义</em>的错误。 如你在<em>头文件</em>aaa.h中<em>定义</em>了一个类aaa如下:    class   aaa    {    };    如果两次#include   "aaa.h"(不见得是直接,也有可能两个不同的<em>头文件</em>中都包含了这个<em>头文件</em>)就会出错,因为相同的类不能<em>定义</em>两次。把aaa.h稍做修改:    #<em>ifndef</em>   _aa
头文件中的ifndefdefineendif
#<em>ifndef</em>、#def、#<em>endif</em>说明     你所遇到的这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。      条件编译命令最常见的形式为:      #ifd
Qt工作笔记-仿大佬风格代码(使用#ifdef Q_OS_WIN32)
程序运行截图如下:代码如下:#include &amp;lt;QApplication&amp;gt; #include &amp;lt;QDebug&amp;gt; int main(int argc, char *argv[]) { QApplication a(argc, argv); #ifdef Q_OS_WIN32 qDebug()&amp;lt;&amp;lt;&quot;这个是Windows操作系统!&quot;; QS...
Eclipse中设置#ifdef中的颜色
可以完全禁用#ifdef高亮显示,方法是: Window-&amp;amp;gt;Preferences-&amp;amp;gt;C/C++-&amp;amp;gt;Editor并取消选中“突出显示非活动代码”框。 此外,您还可以更改#ifdef高亮颜色,方法是转到同一屏幕,并将“非活动代码高亮”颜色(在“外观颜色选项”标题下)更改为更适合您的颜色。...
引用.h函数时,typedef重复定义的问题,用#ifndef #define #endif 来解决
#<em>ifndef</em> MPU6500_data_t_typedef    //引用时,防止重复typedef #<em>define</em> MPU6500_data_t_typedef typedef struct {     s16 accelerate_x;     s16 accelerate_y;     s16 accelerate_z; //    s16 temperature;     s16 gyr...
高质量C++_C编程指南.doc
经典论述了,如下问题: BOOL , float, 指针变量 与“零值”比较的 if 语句。 <em>头文件</em>中的 <em>ifndef</em>/<em>define</em>/<em>endif</em> 干<em>什么</em>用? #include 和 include “filename.h” 有<em>什么</em>区别? const 有<em>什么</em>用途?
#ifndef 头文件重复定义
#<em>ifndef</em>只能保证重复包含时,只包含一次。但snake.cpp和main.cpp是分别进行编译的,snake.cpp里的#<em>define</em>对于main.cpp不起作用。也就是说在编译main.cpp时,snake.h是第一次包含,因此又有一个ch,相互链接时就会发现重<em>定义</em>。正确的作法应该这样: 1)在snake.h里改为: extern char ch; // 只声明不<em>定义</em> extern
c语言最全经典面试题
1、关键字static的作用是<em>什么</em>? 2、“引用”与指针的区别是<em>什么</em>? 3、.h<em>头文件</em>中的<em>ifndef</em>/<em>define</em>/<em>endif</em> 的作用? 4、#i nclude 与 #i nclude "file.h"的区别?
#ifdef WIN32有什么作用?
经常在程序中碰到#ifdef WIN32这样的代码,实际上这提供了一种抽象机制,使代码可以在不同平台间移植. 下面给出一个简单的例子: #include using namespace std; #ifdef WIN32 #<em>define</em> HAHA 1 #else #<em>define</em> HAHA 0 #<em>endif</em> int main() { int i = HAHA; co
#ifndef的用法(C++中)
文件中的#<em>ifndef</em> 头件的中的#<em>ifndef</em>,这是一个很关键的<em>东西</em>。比如你有两个C文件,这两个C文件都include了同一个<em>头文件</em>。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把<em>头文件</em>的内容都放在#<em>ifndef</em>和#<em>endif</em>中吧。不管你的<em>头文件</em>会不会被多个文件引用,你都要加上这个。一般格式是这样的: #<em>ifndef</em> &amp;lt;标识&amp;gt; #<em>define</em>...
#ifndef、#def、#endif使用方法说明
你所遇到的这几个宏是为了进行条件编译。一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。     条件编译命令最常见的形式为:     #ifdef 标识符     程序段1     #else
C++ 防止头文件被重复包含(#pragma once 与 #ifndef 的区别)
为了避免同一个文件被include多次,可以使用以下两种方式来处理: 1   #<em>ifndef</em>方式 2   #pragma once方式 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是仍然还是有一些细微的区别:     方式一:      #<em>ifndef</em> __SOMEFILE_H__     #<em>define</em> __SOMEFILE_H__     ... ... // 一
C语言终极面试宝典(必看)
C语言终极面试宝典(必看) 关键字static的作用是<em>什么</em>? “引用”与指针的区别是<em>什么</em>? .h<em>头文件</em>中的<em>ifndef</em>/<em>define</em>/<em>endif</em> 的作用? 描述实时系统的基本特性 全局变量和局部变量在内存中是否有区别?如果有,是<em>什么</em>区别?
汇编语言中的#define #include #ifdef 等问题
文章寫得很好,我給貼過來了 引用: On Wed, Sep 10, 2003 at 01:07:25PM -0700, garret.spears wrote: > Refernce: > gcc-2.95.3 -m5200 -x assembler led.S Before you compile an assembly source file, you should
头文件什么要加#ifndef #define #endif
文章属于转载:http://blog.csdn.net/buyong/article/details/3945110 当你用VC的菜单新增一个类,你会发现自动生成的代码总是类似下面的样子: #if !<em>define</em>d(AFX_XXXX__INCLUDED_) #<em>define</em>  AFX_XXXX__INCLUDED_ 具体代码 #<em>endif</em>        这是为了防止<em>头文件</em>被重复包含。
stm32f10x.h文件分析理解
stm32f10x.h 这个<em>头文件</em>是STM32开发最为重要的一个<em>头文件</em>,ST开发了这个库,方便大家开发,缩短开发周期。在 stm32f10x.h 中前面一开始就出现了: #<em>ifndef</em> __STM32F10x_H #<em>define</em> __STM32F10x_H #ifdef __cplusplus extern "C" { #<em>endif</em>   extern "C" {   这个语句用
头文件ifndef define endif 作用
#<em>ifndef</em> HELLO_WORLD_H_ #<em>define</em> HELLO_WORLD_H_ #<em>endif</em> 用来保护<em>头文件</em>,防止重复编译。 这样回答有问题吗?
c语言中ifndefendif的用法
<em>ifndef</em> x //if not <em>define</em>的简写   #<em>define</em> x   …  #<em>endif</em>   这是宏<em>定义</em>的一种,它可以根据是否已经<em>定义</em>了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏<em>定义</em>,文件包含和条件编译)中的一种—-条件编译。 C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。
#ifndef 头文件卫士 只防止一个.cpp里的重定义(因为#define只作用于一个.cpp),而不是多个.cpp
转自:http://blog.csdn.net/tmljs1988/article/details/6045757 #<em>ifndef</em> <em>头文件</em>卫士是为了保证类的<em>头文件</em>在一个.cpp文件中被多次引用后会不会出现重复<em>定义</em>的问题,注意,只是防止在一个.cpp文件中被多次引用.     #<em>ifndef</em> ELEMTYPE_H #<em>define</em> ELEMTYPE_H 的意思是,如果前面没有<em>定义</em>ELE
FPGA基础知识23(Verilog中条件编译命令_`ifdef、`else、`endif_用法)
来自:https://wenku.baidu.com/view/084ce39427d3240c8547ef2f.html   Verilog 中条件编译命令 `ifdef 、 `else 、 `<em>endif</em> 用法 一般情况下, Verilog HDL源程序中所有的行都参加编译。但是有时候希望 对其中的一部份内容只有在条件满足的时候才进行编译, 也就是对一部分内容指 定编译的条件, 这就是“条件...
ifndef 的使用方法
<em>ifndef</em>是 if not <em>define</em> 的缩写,一种宏<em>定义</em>。它是预处理功能中三种(宏<em>定义</em>,文件包含和条件编译)中的第三种--条件编译。其使用方式是:#<em>define</em> X...#<em>endif</em>//c语言在对程序进行编译时,会先根据预处理命令进行预处理,C语言编译系统包括预处理,编译和链接等部分。#<em>ifndef</em> X  //先测试是否被宏<em>定义</em>过#<em>define</em> X 程序段1//如果X没有被宏<em>定义</em>过,<em>定义</em>X,...
#ifndef #define #endif的用法
#<em>ifndef</em> #<em>define</em> #<em>endif</em>的用法
Erlang——补遗
转载:http://hi.baidu.com/let163/blog/item/f4877311703faedbf7039ef6.html1。Erlang的保留字有:after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor基本都是些用于逻辑运算、位运算以
招聘 笔试题 笔试题 面试题
1、 你认为作为一个软件工程师应该具备哪些基本素质与品质? 2、 简要说明程序代码中写注释的目的 3、 程序<em>头文件</em>中的 # <em>ifndef</em>/# <em>define</em>/# <em>endif</em>作用是<em>什么</em>? 4、 C程序#include 和 #include”xxx.h”有<em>什么</em>区别? 5、 C++中拷贝构造函数(Copy Contructor)有<em>什么</em>作用?<em>什么</em>情况下必须<em>定义</em>拷贝构造函数?试写程序说明。
条件#ifdefine与#endif的作用
好久没写代码,基本的<em>东西</em>都忘了。今天工作中犯了这个小错误,记下来,顺便温习一下。条件编译中最常见的一种就是如下这种情况:#ifdef 标识符 程序段1 #else 程序段2 #<em>endif</em>意思是,如果<em>定义</em>了标识符就执行程序段1,否则就执行程序段2。其中的else可有可无,看自己代码逻辑情况而定。稍微再引申一点点就是#<em>ifndef</em>的使用常见于<em>头文件</em>中,用于防止出现重复<em>定义</em>的问题。一般使用形式如下:#i...
C++学习笔记(六):关于ifdef 和ifndef的使用
在写程序的时候经常看到<em>这么</em>几句话:        #<em>ifndef</em>  xxx_xxx_x        #<em>define</em>  xxx_xxx_x        ....        #<em>endif</em>       自己也一直知道这个是防止<em>头文件</em>重复编译的保护语句,因此自己写程序的时候只要自己写<em>头文件</em>,那不管三七二十一通通把这几句加上,但是其实自己一直不知道为<em>什么</em>加这几句可以达到防止<em>头文件</em>重复编译的
什么会有#ifdef ...#else...#endif等条件编译语句
1. 在C语言中会大量的看到这些条件编译的命令
链式存储的LinkList.h代码
1. LinkList.h#<em>ifndef</em> _LINKLIST_H#<em>define</em> _LINKLIST_Htypedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode { LinkListNode* next;};LinkList* LinkList_Creat();void L
关于头文件的内容--cdecl
其他回答    共 1 条动态存储分配函数<em>头文件</em>,当对内存区进行操作是,调用相关函数.ANSI标准建议使用stdlib.h<em>头文件</em>,但<em>许多</em>C编译要求用malloc.h,使用时应查阅有关手册.   ===============================================================================/* alloc.h memory management fu
SLAM库基础学习笔记
#HelloSLAM Learing ch2/HelloSLAM.cpp //新建一个cpp文档 #include &amp;lt;iostream&amp;gt; using namespace std; int main( int argc,char** argv) { cout&amp;lt;&amp;lt;&quot;Hello SLAM!&quot;&amp;lt;&amp;lt;endl; return 0; } cpp中有main可执行函数,可...
ifndef/define/endif 结构产生预处理块
最近在看一些C++编程规范,提到了<em>ifndef</em>/<em>define</em>/<em>endif</em>结构产生预处理块,想想自己在原来的代码中虽然知道这个但是并没有完全使用过,特地试了一下: 解释: 为<em>什么</em>要用到这个<em>ifndef</em>/<em>define</em>/<em>endif</em>结构呢?因为很可能一个<em>头文件</em>在一个.cpp文件中被多次引用,这种问题是由于#include嵌套所造成的,例如,有三个类a,b,c,在b.h中引用了a.h,在c.h中包含了a
教你看懂C++类库函数定义之三---_stdcall
上篇文章我们知道#<em>define</em> STDMETHODCALLTYPE __stdcall ,那__stdcall又是个<em>什么</em>东东呢,有<em>什么</em>作用呢?下面来完全的了解一下. 1. _cdecl   (1). 是C Declaration的缩写,表示C语言默认的函数调用方法,实际上也是C++的默认的函 数调用方法。  (2). 所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。具体所示:
#pragma与#ifndef #endif相同点、区别、缺陷
相同点:都是防止<em>头文件</em>重复包含 区别: 1、#pragma once是微软编译器独有的,不支持跨平台,而后者不存在该问题; 2、原理不一样,#pragma once如果发现<em>头文件</em>被包含就不会打开<em>头文件</em>,而后者每次都要打开<em>头文件</em>去判断<em>头文件</em>宏,所以前者更快; 缺陷: #pragma once用在两个内容相同,文件名不同的<em>头文件</em>中时,这2个<em>头文件</em>都会包含进来,编译时就会出现重<em>定义</em>的错
头文件中的 #ifndef/#define/#endif什么用?
“<em>头文件</em>中的 #<em>ifndef</em>/#<em>define</em>/#<em>endif</em> 防止该<em>头文件</em>被重复引用”。我不理解“被重复引用”是<em>什么</em>意思?是不能在不同的两个文件中使用include来包含这个<em>头文件</em>吗?如果<em>头文件</em>被重复引用了,会产生<em>什么</em>后果?是不是所有的<em>头文件</em>中都要加入#<em>ifndef</em>/#<em>define</em>/#<em>endif</em> 这些代码?rn谢谢帮助!!!
netcon.h头文件
#<em>ifndef</em> __REQUIRED_RPCNDR_H_VERSION__ #<em>define</em> __REQUIRED_RPCNDR_H_VERSION__ 440 #<em>endif</em> #include "rpc.h" #include "rpcndr.h" #<em>ifndef</em> __RPCNDR_H_VERSION__ #error this stub requires an updated version of #<em>endif</em> // __RPCNDR_H_VERSION__ #<em>ifndef</em> COM_NO_WINDOWS_H #include "windows.h" #include "ole2.h" #<em>endif</em> /*COM_NO_WINDOWS_H*/ #<em>ifndef</em> __netcon_h__ #<em>define</em> __netcon_h__ /* Forward Declarations */ #<em>ifndef</em> __IEnumNetConnection_FWD_DEFINED__ #<em>define</em> __IEnumNetConnection_FWD_DEFINED__ typedef interface IEnumNetConnection IEnumNetConnection; #<em>endif</em> /* __IEnumNetConnection_FWD_DEFINED__ */ #<em>ifndef</em> __INetConnection_FWD_DEFINED__ #<em>define</em> __INetConnection_FWD_DEFINED__ typedef interface INetConnection INetConnection; #<em>endif</em> /* __INetConnection_FWD_DEFINED__ */ #<em>ifndef</em> __INetConnectionManager_FWD_DEFINED__ #<em>define</em> __INetConnectionManager_FWD_DEFINED__ typedef interface INetConnectionManager INetConnectionManager; #<em>endif</em> /* __INetConnectionManager_FWD_DEFINED__ */ #<em>ifndef</em> __INetConnectionConnectUi_FWD_DEFINED__ #<em>define</em> __INetConnectionConnectUi_FWD_DEFINED__ typedef interface INetConnectionConnectUi INetConnectionConnectUi; #<em>endif</em> /* __INetConnectionConnectUi_FWD_DEFINED__ */ #<em>ifndef</em> __INetConnectionPropertyUi_FWD_DEFINED__ #<em>define</em> __INetConnectionPropertyUi_FWD_DEFINED__ typedef interface INetConnectionPropertyUi INetConnectionPropertyUi; #<em>endif</em> /* __INetConnectionPropertyUi_FWD_DEFINED__ */ #<em>ifndef</em> __INetConnectionCommonUi_FWD_DEFINED__ #<em>define</em> __INetConnectionCommonUi_FWD_DEFINED__ typedef interface INetConnectionCommonUi INetConnectionCommonUi;
.h头文件中的ifndef/define/endif 的作用?
防止该<em>头文件</em>被重复引用!
头文件中的#ifndef #define #endif 的使用
<em>头文件</em>中的#<em>ifndef</em> #<em>define</em> #<em>endif</em> 的使用 头件的中的#<em>ifndef</em>,这是一个很关键的<em>东西</em>。比如你有两个C文件,这两个C文件都include了同一个<em>头文件</em>。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。  还是把<em>头文件</em>的内容都放在#<em>ifndef</em>和#<em>endif</em>中吧。不管你的<em>头文件</em>会不会被多个文件引用,你都要加上这个。一般格式是这样的:  #
头文件中的ifndef/define/endif 的作用
<em>ifndef</em>/<em>define</em>/<em>endif</em>”主要目的是防止<em>头文件</em>的重复包含和编译
详细分析stm32f10x.h
/**这里是STM32比较重要的<em>头文件</em>    ******************************************************************************   * @file    stm32f10x.h                  ST 标准的<em>头文件</em>   * @author  MCD Application Team     微
头文件中的ifndef/define/endif的作用
防止该<em>头文件</em>被重复引用 标识的命名规则一般是<em>头文件</em>名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h #<em>define</em>   _STDIO_H_    例子: /* Define _CRTIMP */ #<em>ifndef</em> _CRTIMP#ifdef  _DLL#<em>define</em> _CRTIMP __declspec(dllimport)#else  
头文件ifndef/define/endif的作…
例如:要编写<em>头文件</em>test.h          在<em>头文件</em>开头写上两行:           #<em>ifndef</em> _TEST_H           #<em>define</em> _TEST_H//一般是文件名的大写          ············          ············          <em>头文件</em>结尾写上一行:           #<em>endif</em>     大概是以前没有学好吧,
头文件中的ifndef/define/endif的作用
标识的命名规则一般是<em>头文件</em>名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h #<em>define</em>   _STDIO_H_    例子: /* Define _CRTIMP */ #<em>ifndef</em> _CRTIMP#ifdef  _DLL#<em>define</em> _CRTIMP __declspec(dllimport)#else   /* ndef _DLL */#
#define#ifndef#endf 防止头文件重复包含,心得,供大家参考
#idndef 宏名 #<em>define</em> 宏名 ********* ********* #<em>endif</em>
从caffe中学习宏定义,宏函数
最近看caffe代码, caffe.cpp 中作者用了一个比较好的宏<em>定义</em>函数,感觉特别好。 特意总结一下宏的使用   宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为“预处理器”的模块,这个模块将宏根据编译参数和实际编码进行展开,展开后的代码才正式进入编译器,进行词法分析、语法分析等等。     我们常用的
C++抽象编程——面向对象(8)——最终版的Rational文件
Rational.h代码如下:/* *这个文件包含了Rational类的声明 ,也包含了这个类的对应的重载运算符的自由 *函数的声明。 */ #<em>ifndef</em> _Rational_h #<em>define</em> _Rational_hclass Rational{ public: /* *构造函数:Rational *用法: Rational R; Rational R1(n);
C语言#define条件编译避免多重包含头文件
<em>头文件</em>的多重包含在绝大多数情况下出现在大型程序中,它往往需要很多<em>头文件</em>,因此要发现这种情况并不容易。要解决这个问题,我们可以使用条件编译。如果所有的<em>头文件</em>都像下面这样写: #<em>ifndef</em> _HEADERNAME_H #<em>define</em> _HEADERNAME_H 1 /* ** All the stuff that you want in the header file */ #<em>endif</em>
#define、预处理、头文件保护符
一、#<em>define</em> //<em>定义</em>宏 #<em>define</em> [MacroName] [MacroValue] //取消宏 #undef [MacroName] //普通宏 #<em>define</em> PI (3.1415926) //带参数的宏 #<em>define</em> max(a,b) ((a)>(b)? (a),(b)) #<em>define</em>命令是C/C++语言中的一个宏<em>定义</em>命令,它用来将一个标识符<em>定义</em>为
宏一定要用大写
前言被一个宏折腾了2次,才偶然发现问题。问题挺隐蔽的,也许是自己对BUG出现后的表现,还不太敏感。 以前认为宏需要大写,可能就是看着舒服,维护方便。 经过这个bug后,增加了体会。宏大写可以降低调试的难度,提高代码的清晰度。BUG回放最近维护的linux工程,为了出win版。代码中不可避免的用宏隔开,或<em>定义</em>了一些在win和linux下都能用的宏。在工程中使用了, pthreads-w32
CC++常见标准头文件前的一般格式解析2
显然,<em>头文件</em>中的编译宏“#<em>ifndef</em> __INCvxWorksh、#<em>define</em> __INCvxWorksh、#<em>endif</em>” 的作用是防止该<em>头文件</em>被重复引用。 深层揭密extern "C"   extern "C" 包含双重含义
深入理解C/C++混合编程(关于#ifdef __cplusplus extern "C" {...}的用法)
本篇文章是对C/C++混合编程进行了详细的分析介绍,需要的朋友参考下。         在工作中,C、C++密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C++,而且是C、C++混搭(混合编程)在一起的,比如,RTP视频传输,live555多媒体播放等都是C++下的,他需要调用JRTPLIB库,再比如,我那邮件发送,我也用C++写的,<em>定义</em>了一个Email对象,包含了成员:收发邮
编译器预定义宏__GNUC__和_MSC_VER
预<em>定义</em>宏__GNUC__和_MSC_VER 一、预<em>定义</em>__GNUC__宏     1 __GNUC__ 是gcc编译器编译代码时预<em>定义</em>的一个宏。需要针对gcc编写代码时, 可以使用该宏进行条件编译。     2 __GNUC__ 的值表示gcc的版本。需要针对gcc特定版本编写代码时,也可以使用该宏进行条件编译。     3 __GNUC__ 的类型是“int”,该宏被扩展
单片机\红外遥控 可以直接就用的
单片机\红外遥控 可以直接就用的 //厂商<em>定义</em>列表 #<em>define</em> SHENSHIYIN #undef SHENSHIYIN #<em>ifndef</em> SHENSHIYIN #<em>define</em> DAVINCI6441 //#undef DAVINCI6441 #<em>endif</em>
C++万能头文件(真心佩服!)
#include&amp;lt;bits/stdc++.h&amp;gt;  调用此<em>头文件</em> 相当于 //c #<em>ifndef</em> _GLIBCXX_NO_ASSERT #include&amp;lt;cassert&amp;gt; #<em>endif</em> #include&amp;lt;cctype&amp;gt; #include&amp;lt;cerrno&amp;gt; #include &amp;lt;cfloat&amp;gt; #include &amp;lt;ciso646&amp;...
EOF是什么
今天面试遇到一个问题,文件中的EOF到底是个<em>什么</em><em>东西</em>,我回答说是-1,然后被面试官鄙视了,纠结了很久,没有回答出来,今天的面试算是挂了吧,不过得把这个知识的空缺补上,特意回来查了下,将别人的博客转载过来,觉得这个还是比较通俗的解释的。原文点这里:EOF是<em>什么</em>? 作者: 阮一峰 日期: 2011年11月12日 我学习C语言的时候,遇到的一个问题就是EOF。 它是end of file的缩写,
头文件中#ifndef后面的如何写及什么作用
在<em>头文件</em>中加入#<em>ifndef</em>或#ifdef等宏<em>定义</em>,是为了防止重复声明。         我们知道,<em>头文件</em>一般是用来声明的,会被其他的源文件和<em>头文件</em>include,当被多个文件include的时候就会造成重复声明。 为了使得只声明一次,引入前面所说的宏<em>定义</em>,一般以文件名大写和_来当宏的名字。         这个宏是给预处理器用的,通常预处理变量用大写,所以这些宏<em>定义</em>都用大写。为了方便,一般将
头文件里面的ifndef /define/endif的作用
c,c++里面,<em>头文件</em>里面的<em>ifndef</em> /<em>define</em>/<em>endif</em>的作用 今天和宿舍同学讨论一个小程序,发现有点地方不大懂······      是关于<em>头文件</em>里面的一些地方: 例如:要编写<em>头文件</em>test.h          在<em>头文件</em>开头写上两行:           #<em>ifndef</em> _TEST_H           #<em>define</em> _TEST_H//一般是文件名的大写     ...
tree类型题目需要用到的头文件tree.h
下面是树类型题目需要用到的<em>头文件</em>tree.h,请包含在cpp文件中编译,而不是放在c文件中编译,比如查找树中两个节点的最低公共父结点的题common_parent_in_tree.cpp,编译它的方法是: g++ -g common_parent_in_tree.cpp -o common_parent_in_tree 下面是tree.h的内容: #include #inclu
ifndef,#define,#endif的使用方法
这是一个比较常用的指令,只要在<em>头文件</em>的最开始加入这条指令就能够保证<em>头文件</em>被编译一次   #pragma once用来防止某个<em>头文件</em>被多次include,#<em>ifndef</em>,#<em>define</em>,#<em>endif</em>用来防止某个宏被多次<em>定义</em>。   #pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器<em>都有</em>这个<em>定义</em>了
通过#if和#endif灵活的为自己代码注释
http://www.cnblogs.com/mupanxi/p/5043707.html 通过#if和#<em>endif</em>来灵活的为自己代码注释 里面有很多形式的注释方式,用到了其中的一种条件注释,如下: 条件编译的命令主要有以下几种 : 形式1 #<em>ifndef</em> 标识符   程序段 I #else   程序段 2 #<em>endif</em>
Delphi各版本号,条件编译有用
Delphi各版本号,条件编译有用 Delphi各版本版本号 (Delphi4...Delphi2010) Delphi各版本版本号 (Delphi4...Delphi2010) { VER10 : Turbo Pascal 1 VER20 : Turbo Pascal 2 VER30 : Turbo Pascal 3 VER40 : Turbo Pascal 4 VER50 
IAR中 _Bool类型溯源
在IAR程序中,经常会出现 _Bool ,ture,false关键字。与过去使用的bool型有差异。 发现在C99的标准中,其实并没有bool类型,而是<em>定义</em>了 _Bool类型关键字。所以在IAR 编译库中,加入了<em>头文件</em>进行关键字<em>定义</em>: /* stdbool.h header */ /* Copyright 2003-2017 IAR Systems AB. */ #<em>ifndef</em> _STD
条件编译 (ifdef 与 ifndef
#<em>ifndef</em> x   #<em>define</em> x   ...   #<em>endif</em>   这是宏<em>定义</em>的一种,它可以根据是否已经<em>定义</em>了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏<em>定义</em>,文件包含和条件编译)中的一种-
#ifndef #define #endif能避免头文件的重定义
      在一个大的软件工程里面,可能会有多个文件同时包含一个<em>头文件</em>,当这些文件编译链接成一个可执行文件时,就会出现大量“重<em>定义</em>”的错误。在<em>头文件</em>中实用#<em>ifndef</em> #<em>define</em> #<em>endif</em>能避免<em>头文件</em>的重<em>定义</em>。  方法:例如要编写<em>头文件</em>test.h  在<em>头文件</em>开头写上两行:  #<em>ifndef</em> _TEST_H  #<em>define</em> _TEST_H//一般是文件名
文章热词 卷积神经网络结构定义 tensorflow resnet网络定义 支持向量机数据定义 单位定义全局变量 em算法中的隐变量问题
相关热词 c++ 中串口通信的头文件都有什么 c#中容器是什么东西 c#中的钩子是什么东西 c#属性值都有什么 人工智能都有什么课程 人工智能要学哪些东西
我们是很有底线的