【问题标题】:expected ',' or '}' before '___attribute__', #define RMW_DECLARE_DEPRECATED(name, msg) name __attribute__((deprecated(msg)))在 '___attribute__' 之前需要 ',' 或 '}',#define RMW_DECLARE_DEPRECATED(name, msg) name __attribute__((deprecated(msg)))
【发布时间】:2021-06-20 03:27:03
【问题描述】:

ros2 滚动安装在树莓派 3b 上返回此错误

https://github.com/ros2/rmw/blob/master/rmw/include/rmw/types.h#L418

我认为第 418 行是错误的,但我不知道如何修复它

image of error

#ifndef _WIN32
#define RMW_DECLARE_DEPRECATED(name, msg) name __attribute__((deprecated(msg)))
#else
#define RMW_DECLARE_DEPRECATED(name, msg) name __pragma(deprecated(name))
#endif

【问题讨论】:

  • 您使用的是哪个编译器? GCC?您可以简单地重试以 #define DEPRECATED(name, msg) name __attribute__ ((deprecated)) 替换它,因此删除调用函数时显示的附加弃用消息。如果这不起作用,您可以尝试简单地将其替换为 #define RMW_DECLARE_DEPRECATED(name, msg) name 删除属性,然后查看编译是成功还是失败。

标签: c cmake raspberry-pi ros ros2


【解决方案1】:

谢谢! @2b-t 您使用这条线的建议奏效了!我不知道这对代码有何影响,但编译运行!

#define RMW_DECLARE_DEPRECATED(name, msg) name 

【讨论】:

  • 优秀。这不是一个非常干净的解决方法,因为 __attribute__((deprecated)) 实际上是为了抑制编译器警告,但只要它有效......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多