C/C++常用预处理指令
作者:网络转载 发布时间:[ 2014/11/13 13:49:30 ] 推荐标签:C++ 编译 布局指令
#line指令
命令#line改变_LINE_与_FILE_的内容,它们是在编译程序中预先定义的标识符。
其格式为:#line number [ filename ],这条指令可以改变当前的行号和文件名。
#include<iostream>
using namespace std;
#line 100 "a.cpp"
int main()
{
cout<<__LINE__<<' '<<__FILE__<<endl;
system("pause");
return 0;
}
运行结果:
布局控制指令
在所有的预处理指令中,#Pragma 指令可能是复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #pragma Para,其中Para 为参数。
message 参数:在编译信息输出窗口中输出相应的信息
#pragma message("消息文本")
code_seg参数:设置程序中函数代码存放的代码段,当我们开发驱动程序的时候会使用到它
#pragma code_seg(["section-name"[,"section-class"]])
#pragma once:
只要在头文件的开始加入这条指令能够保证头文件被编译一次,但移植性差。如果写的程序要跨平台,好使用C++中的宏定义。
#pragma hdrstop:表示预编译头文件到此为止,后面的头文件不进行预编译。
#pragma resource:
#pragma resource "winform.dfm"
表示把winform.dfm文件中的资源加入工程,winform.dfm中包括窗体外观的定义。
#pragma warning:输出警告信息。
我们运行一下程序:
int main()
{
float f=3.6;
int i=f;
cout<<i<<endl;
system("pause");
return 0;
}
会出现如下警告信息:
1>ClCompile:
1>f.cpp
1>c:usersgaohongchendesktop4555f.cpp(12): warning C4305: “初始化”: 从“double”到“float”截断
1>c:usersgaohongchendesktop4555f.cpp(13): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
若我们在程序上方添加:
#pragma warning(disable:4305)
则编译时警告信息会变为:
1>ClCompile:
1>f.cpp
1>c:usersgaohongchendesktop4555f.cpp(13): warning C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
若我们在程序上方添加:
#pragma warning(error:4244)
则警告信息会变为错误信息:
1>ClCompile:
1>f.cpp
1>c:usersgaohongchendesktop4555f.cpp(12): warning C4305: “初始化”: 从“double”到“float”截断
1>c:usersgaohongchendesktop4555f.cpp(13): error C4244: “初始化”: 从“float”转换到“int”,可能丢失数据
#pragma comment:该指令将一个注释记录放入一个对象文件或可执行文件中。
常用的lib关键字,可以帮我们连入一个库文件。例如:
#pragma comment(lib,"wsock32.lib")
#pragma disable:在函数前声明,只对一个函数有效。该函数调用过程中将不可被中断。一般在C51中使用较多。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11