#if defined WINDOWS vs #if defined(WINDOWS)

#if defined WINDOWS vs #if defined(WINDOWS)

将定义括在括号中有什么区别吗?

我问是因为 Qt moc 编译器在看到括号中包含的后一个变体并且定义了 WINDOWS 时崩溃。

更新:从 Qt 5.4.2 升级到 Qt 5.6,我不再看到问题。

不,在这种情况下没有语义差异。但是 moc 对 C++ 和预处理指令的理解有些有限,因此通常需要调整一些结构来满足其简单的想法。

在这种情况下,您也可以使用 #ifdef WINDOWS 获得相同的结果。