我有一个头文件'a.h',其中包含一些类型的宏定义:
标头'a.h'内容:
#define STREAM1 cout
#define STREAM2 cerr
#define STREAM3 some_out_stream3
#define STREAM4 some_out_stream4
...
#define STREAM100 some_out_stream100
现在,在包含上述头文件的另一个c文件中,我需要按照以下方式使用上述宏。
STREAM1 << some_text_method( 1 );
STREAM2 << some_text_method( 2 );
...
STREAM100 << some_text_method( 100 );
是否有一种方法,可能是通过宏或函数定义,在循环中完成上述操作:
int i;
for(i = 1; i <= 100; i++)
SOME_MACRO_OR_METHOD( i );
将所有宏放到一个数组中并遍历它们。
std::ostream streams[] = {STREAM1, STREAM2, ...STREAM100};
for (int i = 0; i < std::size(streams); i++) {
streams[i] << some_text_method(i+1);
}