2018-04-24 创建人:Ruo_Xiao
开发环境:VS2010
邮箱:xclsoftware@163.com
1、__FILE__
:本行语句所在源文件的文件名。
2、__LINE__
:本行语句在源文件中的位置信息。
3、#line
:重新设定上述两个变量的值。
语法格式:“#line number[“filename”]”
栗子:
#include <string>
#include <iostream>
using namespace std;
int main()
{
cout<<__FILE__<<endl;
cout<<__LINE__<<endl;
#line 520 "嘿嘿嘿"
cout<<__FILE__<<endl;
cout<<__LINE__<<endl;
cin.get();
return 0;
}
4、#error
:在编译时输出错误信息
栗子:
#include <string>
#include <iostream>
using namespace std;
int main()
{
#error My Error!
cin.get();
return 0;
}
输出信息:fatal error C1189: #error : My Error!
5、#pragma
(1)#pragma once
:保证该头文件只被编译一次。
(2)#pragma message
:编译器编译到该条语句时输出其后面的文本。
栗子:
#pragma message("哈哈哈!")
编译器输出:
(3)#pragma warning
#pragma warning(disable : 4507 34; once : 4385; error : 164)
功能如下:
A、禁止警告信息的显示,上栗中的disable,禁止显示警告信息4507和34;
B、显示一次,上栗中的once,4385只显示一次;
C、提高警告信息为错误,上栗中的error,警告164升级为错误;
D、保存编译器警告的状态:#pragma warning(push,n),n表示设计全局警告等级。
E、恢复该状态:#pragma warning(pop)。
栗子:
#pragma warning(push) //保存编译器警告状态
#pragma warning(disable:4244) //取消4244的警告
int i = 7.4; //无警告信息
#pragma warning(pop) //恢复之前的警告转改
int k = 5.3; //warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据
return 0;
(4)#pragma comment
A、作用:该指令将一个注释记录放入一个对象文件或可执行文件中。
B、使用方法:#pragma comment(comment-type ,“……”)
C、comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。
栗子:导入lib文件
#pragma comment(lib, "my.lib")
(5)#pragma pack
设置内存的对齐长度。
栗子:
#pragma pack(4)
struct A
{
char a;
int k;
};
int main()
{
cout<<sizeof(A)<<endl;
cin.get();
return 0;
}
结果:5
(SAW:Game Over!)