12 c++ parameters program-entry-point function language-lawyer
我可以使用主函数参数的属性还是它是实现定义的?
看起来main 函数只有 2 种没有属性列表的支持形式,而通用函数声明语法确实有它。
例子:
int main([[maybe_unused]] int argc, char* argv[]);
Run Code Online (Sandbox Code Playgroud)
实际上,没有明确要求必须接受主函数参数basic.start.main 的属性。
但另一方面,如果您阅读dcl.attr.unused#5,您将找不到 main 的任何特殊内容,说明那里不允许这样做。
要符合 C++17 标准,编译器必须知道该属性,但即使是未知属性也不应导致错误。您可以在标准中找到它:
任何不被实现识别的属性标记都将被忽略。dcl.attr#grammar-6
不幸的是,属性有时会导致错误(即使它们不应该)。有关此问题的示例,请参见:GSL_SUPPRESS。
实际上,您的代码被所有主要编译器接受,而没有警告Godbolt。所以我会说没关系。但是因为它允许有一个不带参数的 main 函数,所以我更喜欢这样。
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |