c++ - 外部变量未声明

标签 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);

}

消息.cpp

#include <main.cpp>
void onAction()
{ 
    //write message
    pub.publish(message)
}

它没有编译这个错误:

error: ‘pub’ was not declared in this scope

我认为包括 main,其中 pub 是一个外部变量,应该声明它。我做错了什么?

最佳答案

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

关于c++ - 外部变量未声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136128/

相关文章:

c++ - 移动元素的平均值

javascript - OpenAjax 联盟与普通 Web 开发人员的相关性如何?

.net - 使用 Websphere MQ 主题 .NET API

c - 即使没有声明也使用全局定义

c++ - 将读取预编译的着色器文件发送到 ID3DBlob

c++ - boost::asio::ip::tcp::socket 已连接?

c++ - DDS C++ - 数据分发服务

c - 指针数组外部问题

c++ - C++ 中的外部枚举

c++ - 如何在自定义容器中正确使用 std::allocator?