C++预处理命令之文件包含和条件编译

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++预处理命令之文件包含和条件编译相关的知识,希望对你有一定的参考价值。

文件包含的命令#include有俩种形式:

1、#include <头文件名>

2、#include “头文件名” 

1、文件包含路径问题

文件包含头文件绝对路径:

#include “C:\\DEV\\GSL\\include\\gsl_linalg.h”
#include<C:DEV\\SDL\\include\\SDL.h>


文件包含头文件相对路径:


#include<math.h>
#include<zlib\\zlib.h>
#include”user.h”
#include“share\\a.h”

文件包含命令是相对系统include路径和用户路径来查找头文件的(用户路径就是我们创建项目的路径)

#include”user.h”
//user.h  在C:\\DEV\\MinGW\\include
#include“share\\a.h”
//a.h在C:\\DEV\\MinGW\\include\\share

假设用户路径为D:\\Devshop:

#include”user.h”
//user.h  在D:\\Devshop或者C:\\DEV\\MinGW\\include
#include“share\\a.h”
//a.h在D:\\Devshop\\share或者C:\\DEV\\MinGW\\include\\share

2、文件包含的重复包含问题

头文件优势需要避免重复包含,例如一些特定的声明不能多次声明,而且重复包含增加了变异事件。这时可以采用以下俩个办法之一。

  1. 使用条件编译
  2. 使用特殊预处理命令#pragma

1、#ifdeft条件编译命令

测试条件字段是否定义,以此选择参与编译的程序代码段,他有俩种命令形式。

  1. 第一种形式:
#ifdef 条件字段

……程序代码段1

#endif

    2、第二种形式:

#ifdef 条件字段
……程序代码段1
#else
……//程序代码段2
#endif

例如:如果DEBUG已经定义编译printf语句,否则不编译;

#ifdef 条件字段

Printf(“x=%d,y=%d,z=%d\\n”,x,y,z)

#endif
#include <iostream>
using namespace std;
int main()
{
double sn=100.o,hn=sn/2;
int n;
for(n=2;n<=10;n++){
sn=sn+2*hn;
hn=hn/2;
#ifdef _DEBUG
count<<”sn=”<<sn<<”,hn=”<<hn<<endl;
#endif
}
count<<”the  total  of  road  is “<<sn<<endl;
count<<the tenth is “<<hn<<” meter”<<endl
return 0;
}

 

以上是关于C++预处理命令之文件包含和条件编译的主要内容,如果未能解决你的问题,请参考以下文章

C++笔试常见问题

c++中编译链接总结

成为C++高手之头文件与条件编译

C#-#define条件编译

C语言---面试之预处理篇

C语言的预处理命令