条件编译 #if #endif #ifdef等

2 篇文章 0 订阅
1 篇文章 0 订阅

最近在看C++项目,发现项目里添加了好多#if等符号,查了一下,发现,他们作用不小。
所谓的#if等符号,包含#if,#elif,#ifdef,,#else,#ifndef,#endif,,总称条件编译。

首先,所谓的条件编译,是指在我们书写代代码完成之后,编译之前的预编译阶段发挥作用。大体就是决定是否编译。
举个例子,如果决定写入,就会在对应的EXE文件中包含此代码段,否则,不会包含。值得注意的是,if语句则不同,代码段都会编译进去,只是是否执行罢了。
而条件编译,则大多和宏定义有关。
————————————————编译软件为VS—————————————————
首先,说一下#ifdef,#elif,#else;

先新建一个项目,名为TXET,然后,新建一个类,名为Text,然后再此类里面定义一个宏text,

   class Text
{
public:
    Text();
    ~Text();
#define text  
}

然后在主函数里引用此类,再加上#ifdef text,其后的代码段就会执行。注意,不论是何种类型,在最后都必须加上#endif。这是因为,其执行的是代码段,而不是与if似的不加花括号后的一句代码。

而#ifndef唯一不同的是,若该宏定义未被定义过,则执行#ifndef所含的代码段。

 #ifdef  text
    cout << "Hello Earth";
#else
    cout << "Hello Moon";
#endif

#if则后跟一个表达式。

而条件编译的另一个主要应用就是防止头文件的重复定义。就是在头文件中使用(#ifndef)定义一个宏,若调用此头文件时,就定义它。而当另外一个头文件被调用时,若此头文件包含上一个头文件时,则不会在加载它而直接到#endif。
这是一种方法,而微软则在类中使用#pragma once,既只用一次,来防止该现象。

#pragma once
class Text
{
public:
    Text();
    ~Text();
#define text  
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值