Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为每个文件创建递增整数值_C++_C++11 - Fatal编程技术网

C++ 为每个文件创建递增整数值

C++ 为每个文件创建递增整数值,c++,c++11,C++,C++11,我正在编写一个程序,该程序会为每个文件生成错误代码。 错误代码需要从零开始并递增,文件可以包含“n”个错误代码 我尝试使用计数器宏,但它似乎不适用于每个文件,而是全局递增 是否有办法将每个文件的计数器重置为零 // a.cpp int a_error1 = GetErrorCode(); // error1 = 0 int a_error2 = GetErrorCode(); // error2 = 1 int a_error3 = GetErrorCode(); // error3 = 2 i

我正在编写一个程序,该程序会为每个文件生成错误代码。 错误代码需要从零开始并递增,文件可以包含“n”个错误代码

我尝试使用计数器宏,但它似乎不适用于每个文件,而是全局递增

是否有办法将每个文件的计数器重置为零

// a.cpp
int a_error1 = GetErrorCode(); // error1 = 0
int a_error2 = GetErrorCode(); // error2 = 1
int a_error3 = GetErrorCode(); // error3 = 2
int a_error4 = GetErrorCode(); // error4 = 3
同样地

// b.cpp
int b_error1 = GetErrorCode(); // error1 = 0
int b_error2 = GetErrorCode(); // error2 = 1
int b_error3 = GetErrorCode(); // error3 = 2
int b_error4 = GetErrorCode(); // error4 = 3
我不想要像这样的东西

// a.cpp
int a_error1 = 0 
int a_error2 = 1 
int a_error3 = 2 
int a_error4 = 3 
因为这很容易出错,并且可能包含重复的值


总之,问题是:如何从零开始为每个文件生成增量int值?

您所描述的本质上是一个枚举:

enum a_error {
    a_error1, // value will be 0
    a_error2, // 1
    a_error3, // ...
    a_error4
};

考虑一下范围枚举是否更适合您的设计。

我只是将此作为一个示例,但错误代码是一个包含许多值的对象,这些值不能设置为枚举。我明白了。如果错误代码不是整数,那么枚举本身就不起作用。请在问题中添加新信息。什么是计数器宏?如果没有更多信息,您的问题太广泛,无法回答。
static int counter=0#定义FILE_COUNTER(++COUNTER)
?这个问题有一点不清楚:GetErrorCode()应该在运行时或编译时计算吗?如果它可以在运行时运行,那么它可以是简单的
static int GetErrorCode(const char*s){static std::map counters;return++counters[s];}
,您可以在任何地方使用宏
#定义GET\u ERROR\u code GetErrorCode(u文件u)
。如果需要在编译时完成,则需要做更多的工作,但仍然是可能的。