常见的预处理命令总结:
# 空指令
将位于其后面的任何字符用引号引起来:
#define show(x) cout<<#x;
然后调用show(x),
show(hello world);
相当于:
cout<<"hello world";
#include 在该命令位置处包含一个原代码文件
#define 定义一个宏
#define x 5
int a[x];
相当于:
int a[5];
#define仅进行两个字符串的替换,而不检查其类型,不像const那样定义一个具体的类型(const int x=5;),因此替换常量时不如const。
case:
#include <iostream>
#define x 5;
using namespace std;
int main()
{
#ifndef x
cout<<"x没有定义!"<<endl;
#else
cout<<"x已经定义!"<<endl;
#endif
return 0;
}
#undef 取消已定义的宏,使其在以后的代码中不起作用
#if 若给定条件成立,则编译以下代码
# ifdef (#if defined)若给定的宏已定义,则编译下面的代码
#elif 若前面#if给定的条件不成立,而当前给定的条件成立,则编译下面的代码
#endif 结束一个#if...#else 条件编译块,通常和#ifndef一起使用
#error 停止编译并显示错误信息
#line 用于控制行号(在发布错误和警告信息时使用)
#pragma message("消息文本") 编译器遇到这条指令时,就将消息文本打印出来,用于检查是否在源码中定义了宏:
#include <iostream>
#define x86 500
using namespace std;
int main()
{
#if x86==500
#pragma message("奔腾500处理器确立!")
#endif
return 0;
}
#pragma once一个较常用命令,只要在头文件最开始添加这条指令,就能保证头文件只被编译一次。
#pragma warning:
#pragma warning(disable:4507 34) //将警告4507和34设置为失效,不显示警告信息
#pragma warning(disable:4385) //4385号警告信息仅报告一次
#pragma warning(error:164) //把164号警告信息作为一个错误
#pragma warning(default:n) //将某个警告设置为默认