![]() |
1
2
您可以尝试-临时-将宏修改为类似这样的内容,然后查看什么不能编译…
“else”子句现在应该给出错误。 |
![]() |
2
2
不要费心去寻找代码中发生逻辑错误的所有位置——在源代码处修复问题!更改宏,使其不可能出错:
请注意,我在这里所做的是颠倒测试,为
变成
|
![]() |
3
1
我认为宏的所有好用法都以“”或“;”开头。 所以试试这个正则表达式:
您需要启用多行匹配,并针对整个文件进行搜索。 您可能需要抓取更多的东西,以便找到相关行:—) 或者,改变宏是一个很好的主意,如果我们能计算出一些会正确失败的东西。可能是一个块,后面跟着条件运算符:
(但不需要实现nullstream()运算符。) (或者暂时完全消除条件-正如您建议的,是对另一个答案@roddy(当前所选答案)的注释)。
另外,我知道你没有问,但一个简单的方法是用一个
|
![]() |
4
1
我在你上面的评论中看到你正在考虑在宏中使用一个模板,我还不能评论(我比它少了9点),所以… 什么阻止你做
然后
并重新定义ods以允许一个字符串,或者,如果不能,则只需定义一个odshelper函数,该函数接受一个字符串,其主体只是ods<<instring? 如果没有明确的收获,我不会使用试图模仿<<语法的宏。至少对于模拟函数语法的宏,我们更常用,而且我们知道必须编写块来防止奇怪的问题。 您真的需要<<语法吗? 你真的需要为这个简单的行为介绍一个模板吗? 还有最后一件事-不要使用宏。 |
![]() |
5
0
我认为真正的问题是宏的使用,而不是预处理的代码。但我不认为这是你想要的答案。 我会找到一种不使用宏的方法——如果使用条件编译,可以在对ods()的调用中这样做——这取决于某些定义,它可以使用您想要的任何功能。 我的02美元 |
![]() |
6
0
正则表达式搜索? |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |