循环中的动态宏选择



我有一个头文件'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);
}

相关内容

  • 没有找到相关文章

最新更新