我正在尝试将变量从 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/