VS 预处理指令学习

MFC程序生成EXE文件的过程是:预处理-编译-链接-打包生成exe文件。

预处理是程序在编译之前调用预处理器对预处理指令进行处理识别的过程。

哪些是预处理命令?以#开头的语句都是预处理命令,比较常见的有导入头文件预处理命令:#include,有#define,有#pragma,有#ifdef,有#endif等。

在VS项目属性下C/C++下的预处理器定义可以定义预处理宏,相当于#define xxx,重要的是它的作用范围是当前项目的每个文件,因此是一次定义,全局受用。

VS系统默认定义了几个比较重要的宏,可以方便开发人员进行调试:

__FILE__:代指当前文件名(包含绝对路径)

__DATE__:当前文件编译的日期

__TIME__:当前文件编译的时间

__LINE__:

这几个宏相当于常量,可以像常量一样使用。

TRACE:向输出窗口打印文字

预处理器指令主要分为以下几种:
一、文件包含:#import、#pragma comment(lib,"xxx.lib")

二、宏定义:#define PI 3.1415

三、条件判断处理:#if、#else、#elif、#ifdef、#undef(取消宏定义)、#endif、ifndef

四、其它:

1.#pragma once 该文件只编译一次

2.#error 停止编译并显示错误信息

例如:#ifdef _DEBUG

#error _DEBUG DEFINED

#endif

会弹出错误信息,且程序无法继续编译。

宏定义的作用范围
宏定义能作用在当前文件,以及包含了当前文件的文件中。

如:在xxx.h中定义了宏#define HONG,则yyy.cpp内部包含了它#import xxx.h,则在yyy.cpp中该宏也是有作用的。


预处理器指令

预处理器指令(如 #define 和 #ifdef)通常用于简化源程序在不同的执行环境中的更改和编译。 源文件中的指令告知预处理器采取特定操作。 例如,预处理器可以替换文本中的标记,将其他文件的内容插入源文件,或通过移除几个部分的文本来取消一部分文件的编译。 在扩展宏之前,将识别并执行预处理器行。 因此,如果宏扩展到类似于预处理器命令的内容,该预处理器无法识别该内容。

预处理器语句使用的字符集与源文件语句的相同,只不过转义序列不受支持。 预处理器语句中使用的字符集与执行字符集相同。 预处理器还可识别负字符值。

预处理器可识别下列指令:

#define
#elif#else
#endif

#error
#if
#ifdef
#ifndef

#import
#include
#line

#pragma
#undef
#using

你可能感兴趣的:(VC++,mfc,c++,预处理)