C++ 为每个文件创建递增整数值
我正在编写一个程序,该程序会为每个文件生成错误代码。 错误代码需要从零开始并递增,文件可以包含“n”个错误代码 我尝试使用计数器宏,但它似乎不适用于每个文件,而是全局递增 是否有办法将每个文件的计数器重置为零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
// 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)
。如果需要在编译时完成,则需要做更多的工作,但仍然是可能的。