如何在一行中紧凑书写多条using std::foo语句?
如何紧凑声明std中的单个名字?
嘿,这个问题挺常见的——毕竟谁都想代码既规范又简洁对吧?
首先得明确:单独声明std::里的名字(比如using std::cout; using std::endl;)确实是比using namespace std;更稳妥的做法,《C++ Primer》推荐的这种方式完全没问题。
那要把这些声明挤到一行的话,其实有两种情况要区分:
- C++17及以后版本:可以用逗号分隔多个
using声明,这是最紧凑的写法,示例如下:
这种写法是标准允许的,不会有编译错误,完美符合你想要的紧凑需求。#include <iostream> using std::cout, std::endl, std::cin; // 一行搞定多个std名字声明 int main() { cout << "Hello World!" << endl; return 0; } - C++17之前的版本:抱歉,没法再更紧凑了,只能一行一个
using std::xxx;。这也是你之前仿照变量定义写法报错的核心原因——旧标准里不支持逗号分隔的using声明语法,变量定义的逗号规则不适用于using声明。
最后给个小提醒:就算用C++17的紧凑写法,也别把太多不相关的std名字堆在一行,比如把输入输出类的放一行,容器类的放另一行,兼顾紧凑性和可读性才是最优解。
内容的提问来源于stack exchange,提问作者eric
相关产品推荐
相关产品推荐

