define:
定义宏-
#ifndef:
if not define 如果未定义则编译下面代码- 例如
#ifndef MYTINYSTL_VECTOR_H_
// 如果多次调用该头文件,只编译一次
#define MYTINYSTL_VECTOR_H_
- 例如
#ifdef:
#ifdef max
// #if ...
#pragma message("#undefing marco max")\\ #undef max
// 取消定义宏\-
#endif:
// endif, elif... 即if语句#if 0 balabala #endif //相当于多行注释,不执行
#error:
停止编译并显示错误信息-
#pragma:
一般作用是为特定的编译器提供特定的编译指示\-
pragma once
在头文件的最开始处加上这句话,就可以避免头文件的重复引用(include)。它的作用就是保证每个头文件只编译一次,再加入同名的头文件也没有关系(反正也不编译,且不会报错)。
->if 也可实现- #pragma message
#ifdef max #pragma message("#undefing marco max") // 打印:取消宏定义 #undef max #endif // max 当忘记了某个关键的宏是否正确的设置了。 通过if...判断-> message "打印"
- #pragma hdrstop
当出现这条语句代表预编译头文件到此为止,后面的将不再参与预编译。通常这样做用来指定编译优先级。
- #pragma warning
此指令用于和warning有关的操作(即非致命编程错误的警告)。
具体示例:
#pragma warning (disable:4707) //屏蔽4707警告 #pragma warning (once:4706) //只显示一次4706警告 #pragma warning (error:164) //将164号警告当作一个错误。 也可以三合一写成:#pragma warning (disable:4707;once:4706;error:164)
- #pragma comment
该指令用于导入库。
例如:#pragma comment (lib,"user32.lib")
将user32.lib 库文件导入本工程中。
- #pragma pack
内存对齐 详解博客
- 例如:
连续存储结构字节对齐方式相同 int data[4]; sizeof(data[4]) // 输出值为16 结构体中未指定数值时:[系统默认的对齐模数4/8字节]和[结构体内部最大的基本数据类型成员]长度中数值较小者。 struct { int a; // 4 char b; // 1 string c; // 24 }node; sizeof(node) // 输出32 #pragma pack(1) struct { int a; // 4 char b; // 1 string c; // 24 }node; sizeof(node) // 输出29
-
预处理
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。