条件编译

本文深入探讨了C++预处理器的使用,包括宏定义、条件编译和头文件保护等核心概念。通过具体实例展示了如何利用这些特性进行高效且安全的编程实践。
考虑下面的代码片段
1
2
3
4
#define MY_NAME "Alex"
cout << "My name is " << MY_NAME << endl;
#undef MY_NAME
cout << "My name is " << MY_NAME << endl;

程序的最后一行产生编译错误,因为my_name一直未定义。

条件编译

条件编译预处理器指令允许您指定在什么条件下会或不会编译。唯一的条件编译指令将在本节覆盖#如果定义了,# ifndef,和# endif。

如果定义了该#预处理器指令允许处理器检查值是否已#定义。如果是这样的话,如果定义了编译#和相应的# endif之间的代码。如果不是,代码被忽略。

考虑下面的代码片段:

1
2
3
4
5
6
7
8
9
#define PRINT_JOE
 
#ifdef PRINT_JOE
cout << "Joe" << endl;
#endif
 
#ifdef PRINT_BOB
cout << "Bob" << endl;
#endif

因为print_joe已# cout <<线的定义,“乔”<< endl;将汇编。因为print_bob尚未# cout<<线的定义,“鲍勃”<< endl;将不会编译。

#则是#如果定义了相反的,因为它允许你检查是否一个名字还没有被定义。

1
2
3
#ifndef PRINT_BOB
cout << "Bob" << endl;
#endif

这个程序打印“鲍勃”,因为print_bob从未#定义。

头文件保护

因为头文件可以包含其他头文件,有可能最终在一个头文件被多次包含的情况。例如,考虑下面的程序:

1
2
#include "mymath.h"
int add(int x, int y);
subtract.h
1
2
#include "mymath.h"
int subtract(int x, int y);

当这是包括报头的第一件事,它是检查是否有_ _已名(_以前定义的。如果这是头文件包含一些告诉我们,这里将_独特的_名字没有_定义。第一次,因此,恩#定义了一些__名称和独特的_这里包括的内容文件。如果这不是头文件包含一些告诉我们,这里独特的_ _名称已经定义将_于第一次的头是included.consequently将头,全部忽视内容的第一次。

在你的头文件(头卫队在线应该拥有它们。一些独特的_ _名称_这里你想要的任何名称可以,但头的名称文件通常附加在H与_使用。添加H。例如,标题护栏会:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值