C/C++预处理指令

预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。
1."#“和”##"
(1).#define PI 3.1415926
(2).#define PASTE(n) “asdfg”#n
printf("%s",PASTE(15)); //输出:asdfg15
(3).#define NUM(a,b,c) a##b##c
printf("%d",NUM(1,2,3)); //输出123
2.常见预处理命令
(1).定义变量(define)和取消定义变量(undef)。

#define pi 3.14
int main()
{
	return 0;
}
#undef pi

(2).条件预处理语句(只有在满足一定条件的时候才编译某部分内容)。#if、#ifdef、#ifnedf、#else、#elif、#endif。

#define MAX 10
int main()
{
	#if MAX > 99
		cout<< 123 <<endl;
	#else
		cout<< 456 <<endl;
	#endif
	return 0;
}
//当所指定的标识符被define定义时,仅编译程序#ifdef下的程序段,否则编译#else下的程序段。
#define debug
int main()
{
#ifdef DEBUG
	cout << 111 << endl;
#else
	cout << 222 << endl;
#endif
	system("pause");
	return 0;
}

(3).包含头文件命令(include)
#include
#include “stdio.h”
(4).#line修改代码行的行号。
#line 8 //改变当前行的编号
#line 8 “a.c” //改变当前行的编号,改变当前编译源文件的名字。

#include <stdio.h>
#include<iostream>

using namespace std;
#line 1 "y1.c"

int main()
{
	printf("ling ID:%d,FileName = %s\n", __LINE__, __FILE__);
#line 3 "y3.cpp"
	printf("ling ID:%d,FileName = %s\n", __LINE__, __FILE__);
#line 5
	printf("ling ID:%d,FileName = %s\n", __LINE__, __FILE__);
	system("pause");
	return 0;
}

输出:
在这里插入图片描述
(5).特殊命令预处理(“error”,“pragam”,“NULL”)
1)"error"强制编译程序停止编译,并给出提示信息。执行了该语句,后面的程序将不在继续执行。

#include <stdio.h>
#include<iostream>

using namespace std;
//如果没有定义宏"__DOS",编译报错"DOS OS is required."。如果定义了,成功编译。
#define __DOS
#ifndef __DOS
#error DOS OS is required.
#endif

int main()
{
	cout << "The OS is DOS!" << endl;
	system("pause");
	return 0;
}

2).#pragma指定特殊的指令给编译器。

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #Pragma Para
我在另外一篇博客看到一个比较好的,推荐大家可以去看看:https://blog.csdn.net/zaishaoyi/article/details/46517233

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值