**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我正在IAR Embedded Workbench中开发一个项目,但不断收到来自函数类宏的错误。错误和导致错误的代码片段如下。构建日志:
Error[Pe109]: expression preceding parentheses of apparent call must have (pointer-to-) function type
Error[Pe018]: expected a ")"
代码:来自main. c文件
__UPDATE_SAFETY_VAR(dw_STL_dev_var, 0uL);
宏的定义:从另一个头文件。
#define __UPDATE_SAFETY_VAR(x, value) x = value; \
x##_inv = (__typeof__(x))(~value)
我在“选项-〉C/C++编译器”中添加了头文件作为预处理器。我在mainidocc中包含了头文件。我尝试调整parantheses,但没有任何效果。
我在网上找了这个错误,但是找不到有用的解决方案。我很感激每一个建议。
1条答案
按热度按时间6l7fqoea1#
正如Clifford在注解中指出的,问题很可能是您使用了非标准的
__typeof__
,而编译器不支持它。然而,看看代码,可能并不真实的需要typeof。假设
x
和x_inv
具有相同的类型,那么无论如何,强制转换都是空操作。必须转换值以执行赋值。这几行代码还有其他错误:
首先,包含赋值的宏必须始终包含在
do{}while(0)
中:删除(可能是多余的)强制转换后得到:
最后,为什么需要保留
x
和x_inv
的单独副本?为什么不保留单个副本,然后在实际需要时取其逆副本?