C++中一些未定义的宏是什么意思?

比如:near和far是#definenear和#definefar,我在看一些头文件的时候看到的,但是它什么都没有定义,我不知道是什么意思,有谁能帮忙解释一下?谢谢... 比如:near和far是# define near 和# define far,我在看一些头文件的时候看到的,但是它什么都没有定义,我不知道是什么意思,有谁能帮忙解释一下?谢谢 展开
 我来答
dfdglei
2013-08-23 · TA获得超过1195个赞
知道小有建树答主
回答量:747
采纳率:100%
帮助的人:748万
展开全部
一般这些未定义宏可以作为一些代码上的注释。
例如#define IN 和 #define OUT

定以后,你可以声明函数function(IN int a, OUT int &b);可以在不影响函数的情况下,直观显示那个是传入参数,哪个是传出参数。

另外的未定义宏可以用来防止重复定义。
如:某头文件定义代码有:
#ifdef TTTTT
#defin TTTTT
function();

#endif
这样当在工程里,该头文件被连续包含两次的时候,第二次包含不会再次定义function();而导致出现重定义的问题。

如果你的程序需要同时兼容32位和64位或者其他不同的平台。
那么也可以在程序中最初始时根据不同的环境定义一个宏,例如64位下#define SYSX64
这样如果代码中某些地方环境不同需要采用不同的方法是,可以通过#ifdef SYSX64区分
孟戈大师
2013-08-23 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:173
采纳率:100%
帮助的人:87.5万
展开全部
编译器预处理用的,只是告诉编译器,至两个宏定义过。就像头文件中都要进行宏判断,,如果定义过就不在编译,如果没定义过就编译,#ifdef_CMATH_H;#define _CMATH_H;.................#endif
追问
完全不能理解。。。。。。。
追答
#ifdef _CMATH_H
#define _CMATH_H
代码》》
代码》》
代码》》
代码》》
.#endif

这里编译器编译到这里会进行判断,如果_CMATH_H已经宏定义过了,就跳过中间的代码,如果没有宏定义过,就定义宏,编译中间的代码。为了同一段代码只能编译一次,比如头文件,在多个文件中引用,蛋只变异了一次。就是预处理的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xyzprb
2013-08-23 · TA获得超过133个赞
知道答主
回答量:139
采纳率:0%
帮助的人:70.8万
展开全部
这种就是方便人阅读的。near和far我不太知道,给你举个常用的:IN,OUT
void func (IN int a, OUT int *b)
{
*b = a;
}
这里就是方便人阅读,让人一目了然,a是输入参数,b是输出参数的。
这里的near和far也都是一样的作用,你结合实际意义揣度一下就行了。
追问
是不是一些未定义的宏就是方便阅读,没有实际含义
void func(IN int a,OUT int b)
void func(int a,int b)//a为输入,b为输出
两者可以替换吗?
追答
两者可以替换。
还有一种情况就是dfdglei说的那种,用#define XXX来定义编译的代码段。比如:

#ifdef XXX //如果定义了XXX
//code segment 1
#elif //如果没有定义XXX
//code segment 2
#endif
此时你如果#define XXX,也就是说“定义了XXX"(关于#define XXX你就可以把它理解为定义了XXX为”空“,”空“也是一种定义),那么code segment 1段起左右,否则code segment 2段起作用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式