2011-05-05 107 views
4

有时我运行相当复杂的宏,我想查看它们将扩展到给定参数(也有字符串连接)。有没有机会在那里扩展宏?C++宏扩展器

我知道的编译器标志-E但对于单个文件的

回答

2

C和C++预处理程序被称为在大多数系统CPP - 你可以直接使用它(或最好是单个宏?):

cpp somefile.c 

将预处理somefile.c,扩展宏并将结果写入标准输出。如果您使用Microsoft编译器:

cl -E somefile.c 

将执行相同的操作,假设您的PATH上有编译器。

+0

你的意思是说,我可以从命令提示符下调用此? – Samaursa 2011-05-05 15:47:57

+0

当然 - 它有效地完成了gcc -E的工作,但如果这不满足您的需求,cpp。 – 2011-05-05 15:51:41

+0

好吧,我想我并不完全理解这里的解决方案。如果我在命令提示符下键入'cpp myfile.h',它会说'cpp不是一个可识别的命令'。 – Samaursa 2011-05-05 16:02:07

1

Netbeans IDE允许您通过按住Ctrl + Alt并悬停/单击一个宏来查看宏展开的内容。

3

有几个选项:
在GCC:

GCC-E FILENAME.C

使用电脑预编译:

cpp filename.c 

在Visual Studio中:
右键单击解决方案资源管理器上的文件,转到属性。在配置属性 - > C/C++ - >预处理器&“生成预处理文件”

+0

使用Visual Studio的方法存在的问题是它适用于整个项目,这会使事情变得相当缓慢 – Samaursa 2011-05-05 15:47:27

+0

@Samaursa:第二个选项最适合您。是的,你可以从命令行运行它。我相信它在默认情况下已经存在于PATH中,因此您可以从cmd行运行它。 – 2011-05-05 15:51:42

+0

奇怪的是,它不适合我。但我认为我的设置有问题,因为我最近安装了TortoiseHg,当我在命令提示符下键入'hg'时,它给了我一个错误,说不能识别命令 – Samaursa 2011-05-05 16:04:29

4

如果将鼠标悬停在其上,Eclipse将展开宏。对于包含其他宏的宏,Eclipse甚至可以一步一步地完成宏扩展。

(您可以使用Eclipse这个即使您通常使用其他IDE)。