c - 如何在if条件中定义代码块
问题描述
我使用旧的 C 项目,应该进行一些更改它有很多宏.... 函数调用在那里定义为
#define myFunc(arg) myBaseFunc(arg)
bool myBaseFunc
是一个函数,实际上有几个myBaseFunc
(它是一种多态性)我需要添加一些参数正确性检查myFunc
实际上项目有:
#define checkArg(arg) {\
// lot of code
}
我不能改变checkArg
实现 1) 我想//
/*It is not correct if I do `if(myFunc(arg))`*/
#define myFunc(arg)\
checkArg(arg)\
myBaseFunc(arg)
2)我想
/*It is better...but compiler doesn`t like code block `{}` inside`if(myFunc(arg))`*/
#define myFunc(arg)(\
checkArg(arg),\
myBaseFunc(arg))
这种情况有解决方法吗
解决方案
一种可能的解决方案是在将 arg 传递给基本函数之前对其进行检查。但是,只有在只有一个论点时才有效。
#define myFunc(arg) myBaseFunc(checkArg(arg))
您的checkArg
函数必须更改,以便它们返回与参数相同的值,例如
int checkArg(int value) {
... test stuff
return value;
}
推荐阅读
- flutter - Flutter:如何使用 Wrap 而不是 ListView.builder?
- javascript - 通过 id 查找元素并附加到对象中
- angular - Angular:在 Angular 路由上刷新目标
- c# - dotnet 在不同端口上运行导致“连接 id 'xxxx' 请求处理异常结束”
- javascript - JSON.parse 位置 0 处的意外令牌
- google-apps-script - 我们可以使用 CalendarApp 查看我们订阅的非 Google 日历(例如 Trello 日历)中的事件吗?
- ios - 如何在 UI 工作中显示微调器?
- tensorflow - 无法在 Intel i7 930 CPU 上从源代码编译 TensorFlow;GTS-250 显卡
- git - 空仓库中特定文件的稀疏签出
- css - 使用 ios 13 ipad 在 safari 上渲染 html 和 css 是错误的,而它在 ios 12 相同 ipad 上正确渲染