c - 用于删除除受保护部分之外的所有输入代码的 C 宏
问题描述
鉴于 C 注释是在预处理器宏之前处理的,并且似乎无法从宏中插入注释,我想知道我的想法是否无法使用 C 预处理器实现。想象一下这段代码:
KEEP_SPECIFIED_TEXT_ONLY( int myfunc(const char *strarg) {
char str1[] = "just a test";
KEEP(char) str2[] = "voila";
int a=2;
double b=1.0;
if(!strcmp(strarg,str1)) return 1;
if(!strcmp(KEEP(strarg),str2)) return 2;
return 0;
}
)
然后我想处理那部分两次。在其中一个调用中,KEEP_SPECIFIED_TEXT_ONLY
宏和KEEP
宏都将被定义为#define M(X) X
,因此输出将是可编译的代码。
但在第二次调用中,我希望得到同样char strarg
的输出,删除在KEEP()
.
实际上,我不需要真正删除未受保护的输入,因为它应该被编译,就像在第一次调用中一样。因此,如果有某种方法可以让编译器在不删除文本或不使用注释的情况下忽略文本,它也可以工作。
这可能吗,还是我需要使用m4来做这样的事情?
解决方案
推荐阅读
- java - 在 Eclipse 中更改 if() 和 { 之间的空格
- javascript - 点击时不计入索引
- r - 如何在 r ggplot2 的多面图上将数据的平均值添加为水平线
- python - 如何忽略错误而不是返回 400 Bad Request?- Django Rest Framework
- android - Android工作室,BottomNavigationView
- mysql - 从同一个表创建 MySQL JOIN (parent_title from parent_id)
- python - 使用 Keras 训练句子序列
- windows - 网络用户 $userName /domain
- sql-server - SSRS - Power BI 报告服务器:同时运行订阅
- javascript - node.js 异步等待 - 错误 regeneratorRuntime