关闭

c++ 宏展开

298人阅读 评论(0) 收藏 举报
分类:

 window上的宏展开:

宏在我们的代码中能经常给我们带来很大的便利,但是有些宏会造成意向不到的错误,能够查看宏展开就能够查看宏错误的根源。VS2008对编译是不保存预处理的文件信息的,而宏展开的信息就是在预编译阶段。如下图:

      预编译选项

      工程属性--》配置属性--》c/c++--》预处理器--》生成预处理文件,默认“否”是不生成预编译文件的。生成的预编译文件是项目文件下的.i文件,想要产生此文件,可选择“生成预处理文件”的选项“带行号(/P)”或者“不带行号(/EP /P)

#include <stdio.h>
#define SUM(a,b) a+b
#define arrLen(arr) sizeof(arr)/sizeof(arr[0])
int main(){
	int c = 3, d = 4;
	int sum = SUM(c, d);
	printf("sum=%d", sum);
	int data[] = { 5,6,8,9,6,4 };
	for (int i = 0; i < arrLen(data); i++)
	{
		printf("%d\n", data[i]);
	}
	return 0;
}

红展开的文件 .i文件(节选)

# 3 "main.cpp" 2

int main(){

 int c = 3, d = 4;
 int sum = c+d;
 printf("sum=%d", sum);
 int data[] = { 5,6,8,9,6,4 };
 for (int i = 0; i < sizeof(data)/sizeof(data[0]); i++)
 {
  printf("%d\n", data[i]);
 }
 return 0;
}
项目、属性、配置属性、C/C++、命令行、附加选项(D):/EP /P、确定。
Linux上的宏展开:

g++ -E -P main.cpp > main.i

gcc -E -P main.cpp > main.i





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1694538次
    • 积分:24511
    • 等级:
    • 排名:第247名
    • 原创:780篇
    • 转载:383篇
    • 译文:0篇
    • 评论:215条
    我的技术博客
    最新评论