Evo. G Tech Team Forum
Welcome to Evo. G Tech Team Forum. We have moved to a new website : www.evogtechteam.com

Thanks you.

by Evo. G Tech Team Management.

常用c++预设处理指令

View previous topic View next topic Go down

常用c++预设处理指令

Post by too wei on July 10th 2015, 13:38

#include用于包含头文件
#include
#include "xxx.h"

尖括号形式
表示被包含的文件在系统目录中。如果被包含的文件不在系统目录中,应该用双引号形式

在双引号形式
可以指出文件路径和文件名。如果没有给出绝对路径,则默认为用户当前目录中的文件
此时系统首先在用户当前目录中寻找要包含的文件,若找不到再在系统目录中查找

对于自己编写的头文件,用双引号形式
对于系统提供的头文件,既可以用尖括号形式,也可以用双引号形式,但显然用尖括号形式效率更高


#ifdef和普通的if语句概念类似,只是用在预设处理器上

#ifdef ... //也可换成 #ifndef 
...
#elif ...              //elseif的意思
...
#else
...
#endif


#error 
在编译时发出用户指定的错误消息然后终止编译

#define SIZE 100
#ifndef SIZE
#error size is not define.
#endif


#define
创建一个宏。 在定义宏之后,编译器用标记字符串替换源文件中标识符的每个匹配项
#undef
取消之前使用 #define 创建的名称

#define SIZE 100
#define max(x,y)  ((x>y)? x:y)
#undef SIZE
#undef max


#line
改变当前的行数和文件名称

#line 20               //当前行数为20,接下去就是21,22...
#line 30 "demo.h"  //当前行数为20,文件名为"demo.h"



常用#pragma指令

#pragma message("text")  
在编译输出窗口中将text打印出来


#pragma code_seg(["section-name"["section-class"]])
设置程序中函数代码存放的代码段,开发驱动程序时使用


#pragma once
让头文件只被编译一次


#pragma hdrstop
表示编译头文件到此为止,后面的头文件不进行预编译


#pragma  resouce"*.dfm"
表示*.dfm文件中的资源加入工程。*.dfm中包括了外观定义。


#pragma warning (disable:4507  34)   //不显示4507和30号警告信息
#pragma warning (once:4385)   //4358号警告信息仅报告一次
#pragma warning (error:164) //把164号警告信息作为一种错误
//和上面3个同样意思
#pragma warning (disable:4507  34; once:4385; error:164)

1, 2, 3, 4 指定警告级别, 这会启用默认情况下处于关闭状态的指定警告
default   将警告行为设为默认值, 这会启用默认情况下处于关闭状态的指定警告, 生成的警告将使用在其文档中提到的默认值
disable    不生成指定的警告消息
error       将指定的警告报告为错误
once       只显示指定消息一次。
suppress 将pragma的当前警告状态保存在堆栈中,在下一行中禁用指定的警告,然后从堆栈中弹出pragma的当前警告状态,以便恢复警告状态

 

#pragma comment( comment-type [,"commentstring"] )
该指令将一个注释放入一个对象文件或可执行文件中
如:#pragma  comment(lib,"user32.lib") //将user32.lib库文件加入到本工程中

 

#pragma pack( [ show ] | [ push | pop ] [, identifier ] , n  )
指定结构、联合和类成员的封装对齐
所有参数都是可选的

show 显示封装对齐的当前字节值, 该值由警告消息显示

push 将当前封装对齐值推送到内部编译器堆栈上,并将当前封装对齐值设置为 n。 如果未指定 n,则将推送当前封装对齐值。

pop 从内部编译器堆栈的顶部移除记录。
如果没有用 n 指定 pop,则与堆栈顶部的生成的记录关联的封装值是新的封装对齐值。 
如果指定了 n,n 就是新的封装对齐值。
如果使用 identifier进行弹出,则堆栈上的所有记录都将弹出,直到找到包含 identifier 的记录。 该记录将会弹出,与堆栈顶部的生成的记录关 联的封装值是新的封装对齐值。
如果使用在堆栈上的任何记录中均未发现的 identifier 进行弹出,则会忽略 pop。

identifier 
当与 push 一起使用时,为内部编译器堆栈上的记录指定名称。
当与 pop 一起使用时,从内部堆栈中弹出记录,直到移除 identifier;如果未在内部堆栈上找到 identifier,则不会弹出任何内容。


指定要用于封装的值(以字节为单位)。
如果没有为模块设置编译器选项 /Zp,默认值为 8, 有效值为 1、2、4、8 和 16。 
成员将在作为 n 的倍数或成员的大小的倍数的边界(以较小者为准)上对齐。

too wei
Sponsor
Sponsor

Posts : 31
Points : 16551
Reputation : 0
Join date : 2015-04-21
Age : 18
Location : Johor

View user profile

Back to top Go down

View previous topic View next topic Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum