在 C++ 中使用 extern 时出错
Error when using extern in c++
我正在做一个项目,我必须通过 WiFi 模块接收 UDP 数据包并对其进行处理。但是,我仍然是 c/c++ (Student) 的初学者。
在我的主文件 main.cpp 中,我使用 UDPSocket class 来初始化我的模块和服务器之间的通信。
UDPSocket server(ð);
static void nsp_init()
{
NSDL_DEBUG("name: %s", endpoint_name);
server.open("xxx.xxx.xxx.xxx", xxxx);
NSDL_DEBUG("name: %s", endpoint_name);
NSDL_DEBUG("EP:%s\n", endpoint_name);
}
问题出在我的 processing.cpp 文件中,我想访问我在 [=27= 中声明的 class 的 recv 实例] :
#include "ESP8266Interface.h"
#include "UDPSocket.h"
extern Serial pc;
extern ESP8266Interface eth;
extern UDPSocket server(ð); //Am getting an error for using this
extern char endpoint_name[16];
extern uint8_t ep_type[];
extern uint8_t lifetime_ptr[];
我的问题是如何使用我在主 class?
中声明的相同 UDPSocket 服务器(ð)
非常感谢您的意见...
对象的 extern
声明不应该有初始值设定项,除非您希望声明是一个定义(在这种情况下,server
被多次定义,导致链接器错误)。通常,您会在声明中省略初始值设定项,而只在定义中使用它;初始化由定义对象的翻译单元完成。所以声明只是:
extern UDPSocket server;
extern
对象声明有点像函数的前向声明。最佳做法是将它们放在头文件中。因此,您可能应该将 server
和其他变量的 extern
声明移动到某个 foo.h
文件中,并将定义移动到 foo.cpp
中,并具有 main.cpp
和 processing.cpp
都包括 foo.h
.
我正在做一个项目,我必须通过 WiFi 模块接收 UDP 数据包并对其进行处理。但是,我仍然是 c/c++ (Student) 的初学者。 在我的主文件 main.cpp 中,我使用 UDPSocket class 来初始化我的模块和服务器之间的通信。
UDPSocket server(ð);
static void nsp_init()
{
NSDL_DEBUG("name: %s", endpoint_name);
server.open("xxx.xxx.xxx.xxx", xxxx);
NSDL_DEBUG("name: %s", endpoint_name);
NSDL_DEBUG("EP:%s\n", endpoint_name);
}
问题出在我的 processing.cpp 文件中,我想访问我在 [=27= 中声明的 class 的 recv 实例] :
#include "ESP8266Interface.h"
#include "UDPSocket.h"
extern Serial pc;
extern ESP8266Interface eth;
extern UDPSocket server(ð); //Am getting an error for using this
extern char endpoint_name[16];
extern uint8_t ep_type[];
extern uint8_t lifetime_ptr[];
我的问题是如何使用我在主 class?
中声明的相同 UDPSocket 服务器(ð)非常感谢您的意见...
对象的 extern
声明不应该有初始值设定项,除非您希望声明是一个定义(在这种情况下,server
被多次定义,导致链接器错误)。通常,您会在声明中省略初始值设定项,而只在定义中使用它;初始化由定义对象的翻译单元完成。所以声明只是:
extern UDPSocket server;
extern
对象声明有点像函数的前向声明。最佳做法是将它们放在头文件中。因此,您可能应该将 server
和其他变量的 extern
声明移动到某个 foo.h
文件中,并将定义移动到 foo.cpp
中,并具有 main.cpp
和 processing.cpp
都包括 foo.h
.