在两个文件之间共享C++结构
Share C++ struct between two files
我想在两个文件之间共享一个C++结构(在Android-NDK编程的上下文中)。在第一个中初始化结构,在另一个中最后使用它。
所以我在头文件 struct.h 中定义结构(我包含在两个文件中.cpp文件)并将其声明为静态变量:
struct A {
int v;
A(){
v = 0;
}
}
static A structA;
然后我在第一个 i.cpp-File 中为它分配一个值,例如:A.v = 5。但是当我在第二个j中调用它时.cpp它仍然是0。
整个过程如下所示:
Java 代码 ->调用 i.cpp 并分配值 ->Java 代码 -> 调用 j.cpp 并读取值 ->错误
但
Java 代码 ->调用 i.cpp 并分配值 ->Java 代码 -> 调用 i.cpp 并读取值 ->
这是因为当您声明变量structA
时static
关键字。这使得变量在包含头文件的每个源文件中都是唯一的。
如果你声明变量extern
而不是static
,并在一个源文件中定义它(不带static
或extern
),你应该看到它有效。
首先,您要共享的是对象,而不是结构。结构定义对象的类型。
其次,static
的意思是"不要与其他翻译单位共享"。我敢打赌你把它卡在那里,因为没有它,你会从链接器那里得到关于重复定义的投诉。
执行此操作的方法是在标头中声明对象并仅在一个位置定义它。这在标题中:
extern A structA;
这位于要初始化它的源文件中:
A structA;
相关文章:
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- C++两个源文件之间共享的枚举的静态实例
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- Directx 12 :在两个进程之间共享图形内存
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 简单使用 std::atomic 在两个线程之间共享数据
- C++:在另外两个对象之间共享一个对象
- 在C++中的程序之间共享指针
- 拥有或在对象之间共享资源
- 在两个结构之间共享数组
- 如何在不同的CMakeList.txt之间共享变量?
- 在QT中的两个窗口之间共享websocket连接
- 在VS2017中,我们如何在项目成员之间共享编译设置
- 通过require在不同的Lua状态之间共享全局变量
- 在两个类实例之间共享向量
- OpenGL GLFW GLAD 在项目之间共享 Visual C++.
- 如何在C++中的不同翻译单元之间共享枚举的实例
- 在 c++ 中,在线程之间共享数据容器的最佳方法是什么?
- 在Emscripten和Qt之间共享OpenGL代码