ubuntu - C中 token "("之前缺少二元运算符

标签 ubuntu gcc boolean c-preprocessor

我在 Ubuntu 18.04.3 LTS 中使用 gcc 版本编译器。使用 ROS 库。
我的代码非常简单:

typedef unsigned char       boolean; 

#define TRUE    (boolean)(1)
#define FALSE   (boolean)(0)
通过上面的编译,我得到了编译器错误:
error: missing binary operator before token "("
  #define TRUE    (boolean)(1)
                          ^
上面的用法#define我猜是在操作系统库文件中。
../../../M3N_BSW/bsw_pc/virtual/ros/librosc/XmlRpc/include/ros_lm_xml_value.h:80:6: note: in expansion of macro ‘TRUE’
---------------------------------------------------------------------
 #if (TRUE == ROS_LM_XML_VALUE_DOUBLE_ENABLE) /* [05] */
      ^~~~
但是,当我定义如下时,没有错误。
#define SOMETHING  ( ( uchar8 ) 1 )
同样,关键字 boolean在其他地方用于声明变量并且工作正常。引用下面的代码..

使用地点是这样的:
#define ROS_LM_XML_VALUE_DOUBLE_ENABLE (FALSE)
someFunc()
{
     boolean someVar=FALSE;  //How come this is recognized correctly ? 
     #if (TRUE == ROS_LM_XML_VALUE_DOUBLE_ENABLE)
     {
        //Do something
     }
}
关键字的使用 boolean#define某处出错。
请指导我。INTEGRITY 中使用了相同的代码操作系统。
没有编译器错误。

最佳答案

似乎我们不能这样比较,因为 LHS 中的 TRUE 是类型转换的。这部分有问题。

#if (TRUE == ROS_LM_XML_VALUE_DOUBLE_ENABLE)
感谢您的支持。

关于ubuntu - C中 token "("之前缺少二元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63126251/

相关文章:

c# - 显式布局类型中 bool 字段的语义 (ECMA-334)

c++ - 在 openCV 中调用 Gstreamer

linux - Firefox/bin/sh 中动态链接库出错 : symbol lookup error

c++ - 在 mac 上使用 gcc 编译器编译 c++ SDL2 程序

c - GCC - 初始化程序周围缺少大括号

c# - 检查bool变量是否在c#中初始化

java - BooleanProperty,其值取决于节点是否添加到场景中

c++ - 在 Ubuntu 12.04 上链接 - 对 `clock_gettime@GLIBC_2.17' 的 undefined reference

ubuntu - Asterisk 和 DAHDI 设置

Python:无法在 Matplotlib 中渲染 Tex