外部变量未声明

时间:2017-11-06 11:38:21

标签: c++ publish-subscribe extern ros

我正在尝试将一个变量从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是一个外部变量,应该声明它。我做错了什么?

1 个答案:

答案 0 :(得分:1)

从message.cpp中包含main.cpp肯定是错误的。您应该在一个翻译单元中声明pub。由于它定义的extern是main.cpp,你可以在message.cpp中声明它ros::Publisher pub;

相关问题