我正在尝试将一个变量从main.cpp传递给message.cpp。
我的情况基本上就是这样(删除不相关的代码部分):
的main.cpp
extern ros::Publisher pub;
int main(int argc, char* argv[])
{
ros::NodeHandle nh("~");
pub = nh.advertise<myws_ros::Message>("/myws_ros/message", 1000);
}
message.cpp
#include <main.cpp>
void onAction()
{
//write message
pub.publish(message)
}
没有编译此错误:
错误:'pub'未在此范围内声明
我认为包括main,其中pub是一个外部变量,应该声明它。我做错了什么?
答案 0 :(得分:1)
从message.cpp中包含main.cpp肯定是错误的。您应该在一个翻译单元中声明pub
。由于它定义的extern
是main.cpp,你可以在message.cpp中声明它ros::Publisher pub;
。