用于重复使用std :: xyz语句的C ++宏

时间:2013-08-22 11:49:16

标签: c++ macros c-preprocessor

有时我的文件看起来像这样:

using std::cout;
using std::endl;
using std::string;
using std::vector;
using std::size_type;

是否有可能以某种方式避免每次都写出公共部分?像这样:

USING(std, cout, endl, string, vector, size_type);

我在考虑一个var-arg宏,但不知道是否有可能迭代那些var args ..

2 个答案:

答案 0 :(得分:7)

您可以使用namespace代码,您需要std::coutstd::endlstd:: ...

示例:

#include <iostream>

namespace my {
  using std::cout;
  using std::endl;
}

int main() {
  using namespace my;
  cout << "hello" << endl;
}

答案 1 :(得分:0)

Unfortunatley没有办法用宏来做你想做的事:( 充其量你可以用以下方式“减少”你的工作:

USESTD(a) using std::a;

但是......不确定它的价值,从我的观点来看,Chirs的观点非常好:)我喜欢看到事情的来源!