如何使__COUNTER__在不同的cpp文件中生成相同的值
how to make __COUNTER__ to generate the same value across different cpp files
我正在使用预定义的__COUNTER__
宏来定义我的类型。但是,如果我从main.cpp访问变量sval1
,它将获得与从test.cpp访问不同的__COUNTER__
值。
如何确保在所有.cpp文件中生成相同的__COUNTER__
值?
template <class TYPE, DWORD CRYPT_KEY>
class SVar;
struct t_teststruct
{
SVar<type, __COUNTER__> sval1;
}
最佳做法是在每个需要访问该变量的源文件(.cpp)中包含一个头文件(.h)。头文件应该将计数器声明为extern
。
counter.h:
#ifndef COUNTER_H
#define COUNTER_H
extern int __COUNTER__;
#endif
单个源文件应该包含变量的实际声明(以及任何所需的初始化)。
计数器.cpp:
#include "counter.h"
int __COUNTER__ = 0;
main.cpp:
#include "counter.h"
int main() {
// etc.
return 0;
}
test.cpp:
#include "counter.h"
struct t_teststruct
{
SVar<type, __COUNTER__> sval1;
}
// etc.
每个源文件都应该单独编译。然后,可以将最终可执行文件链接到counter
对象文件:
g++ -o test.exe main.o test.o counter.o
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?