我有以下宏:
#define oslock_TryAcquire(pLock) { \
INITIALIZED_ASSERT(pLock) \
acquire(pLock)}
在编译时我得到:
error: expected expression before ‘{’ token
#define oslock_TryAcquire(pLock ) { \
更新: ^
我收到“后续”错误:
note: in expansion of macro ‘oslock_TryAcquire’
if(!oslock_TryAcquire(&pLock)){
^~~~~~~~~~~~~~~~~~~~~~
我不明白这是什么问题?将会得到建议
最佳答案
宏是一种美化的文本替换。您的来电
if(!oslock_TryAcquire(&pLock))
扩展到
if(!{INITIALIZED_ASSERT(&pLock) acquire(&pLock)})
这是无意义的语法,有几种不同的用法。使用函数而不是宏。
关于c - C风格的宏编译,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57572334/