C++ 未声明外部变量
我正在尝试将一个变量从main.cpp传递到message.cpp 我的情况基本上是这样的(删除代码中不相关的部分): main.cppC++ 未声明外部变量,c++,publish-subscribe,extern,ros,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); } #include
extern ros::Publisher pub;
int main(int argc, char* argv[])
{
ros::NodeHandle nh("~");
pub = nh.advertise<myws_ros::Message>("/myws_ros/message", 1000);
}
#include <main.cpp>
void onAction()
{
//write message
pub.publish(message)
}
extern ros::Publisher pub;
int main(int argc,char*argv[])
{
ros::NodeHandle nh(“~”);
pub=nh.advertive(“/myws\u ros/message”,1000);
}
message.cpp
extern ros::Publisher pub;
int main(int argc, char* argv[])
{
ros::NodeHandle nh("~");
pub = nh.advertise<myws_ros::Message>("/myws_ros/message", 1000);
}
#include <main.cpp>
void onAction()
{
//write message
pub.publish(message)
}
#包括
无效操作()
{
//写消息
发布(消息)
}
编译时未出现以下错误:
错误:未在此作用域中声明“pub”
我认为包括main,其中pub是一个外部变量,应该声明它。我做错了什么?包括message.cpp中的main.cpp肯定是错误的。您只需在一个翻译单元中声明
pub
。由于它的定义是extern
is main.cpp,所以您只需声明它ros::Publisher pub中的code>“我认为包括main,其中pub是一个外部变量,应该声明它。”不,这在基本层面上是错误的。我推荐一本好的入门书。#在消息中包含。cpp
不是一个好主意。这(至少)重复了int main()
的定义。(修复发布问题后,可能会出现链接错误。)目前没有main.h,我反对为main函数创建它,但我认为这可能是我所需要的。在message.cpp(nodehandle和advision)中创建发布者之前,该程序正在运行,但现在我需要创建它,因为我运行了main,只需在执行操作时发布消息。