vso*_*tco 2 c++ program-entry-point stdvector command-line-arguments
是否有任何根本原因新的C++ 17(或更高版本)将不允许写的另一种方式main为
int main(std::vector<std::string> args){...}
Run Code Online (Sandbox Code Playgroud)
?我知道需要与以前的代码兼容,所以
int main(int, char**)
Run Code Online (Sandbox Code Playgroud)
仍然必须存在,但是有什么技术可以阻止第一个"替代"声明吗?
以下是如何做到这一点你自己,平凡中的代码非常几行:
auto my_main( std::vector<std::string> const& args ) -> int;
auto main( int n_args, char** args )
-> int
{ return my_main( std::vector<std::string>( args, args + n_args ) ); }
Run Code Online (Sandbox Code Playgroud)
Modulo符号我相信这个approch在Accelerated C++书中有所介绍,即它是众所周知的.
一个人不需要将其添加到标准中:那些发现它有用的人可以只复制并粘贴代码.
其他人可能觉得它没有用:它在Windows中不能很好地工作,因为按照惯例,main参数在Windows中不是Unicode,而且Microsoft setlocale明确不支持UTF-8语言环境.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |