我有以下宏:

#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/

10-09 07:17