Cla*_*diu 15 c macros gcc c-preprocessor
有没有办法运行GCC预处理器,但仅适用于用户定义的宏?
我有一些单行和一些#ifdef等条件,我想看看我的代码在扩展时的样子.
实际上,包括扩展,我fprintf(stderr)转入fprintf(((__getreeent())->_stderr),等等.
Ark*_*kku 14
cpp直接打电话,例如
$ cat >foo.c <<EOF
#define FOO
#ifdef FOO
foo is defined
#else
foo is not defined
#endif
EOF
$ cpp foo.c
# 1 "foo.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "foo.c"
foo is defined
Run Code Online (Sandbox Code Playgroud)
当然,如果您包含任何标题,那么这些标题将包含在输出中.避免这种情况的一种方法可能是grep -v用#includes(或者只是带有#include <和允许的#include ")来排除这些线.或者您可以指定-nostdinc删除标准包含的选项(但可能会留在本地库中,除非您指定包含路径以便找不到它们) - 但这会警告缺少标题.
编辑:或者使用预处理器本身使头部包含条件,将它们包装在类似的东西中#ifndef TESTING_PREPROCESSOR并使用-DTESTING_PREPROCESSOR.
| 归档时间: |
|
| 查看次数: |
3730 次 |
| 最近记录: |