c++ - 主要功能参数的属性

标签 c++ function parameters language-lawyer main

我可以使用主函数参数的属性还是它是实现定义的?
Looks like main 函数只有 2 种支持形式,没有 attribute-list而一般function declaration syntax确实有。
示例:

int main([[maybe_unused]] int argc, char* argv[]);

最佳答案

实际上,没有明确要求必须接受主函数参数的属性basic.start.main .
但另一方面,如果您阅读 dcl.attr.unused#5您找不到 main 的任何特殊内容,说明那里不允许这样做。
要符合 C++17 标准,编译器必须知道该属性,但即使是未知属性也不应导致错误。您可以在标准中找到它:

Any attribute-token that is not recognized by the implementation is ignored. dcl.attr#grammar-6


不幸的是,属性有时会导致错误(即使它们不应该)。有关此问题的示例,请参见:GSL_SUPPRESS .
在实践中,您的代码被所有主要编译器接受而没有警告 Godbolt .所以我会说没关系。
但是因为它允许有一个不带参数的 main 函数,所以我更喜欢这样。

关于c++ - 主要功能参数的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62736923/

相关文章:

c++ - 根据类模板参数值禁用成员函数

c++ - 使用位掩码生成素数导致程序崩溃

c++ - 没有构造函数 "RobotDriveSwerve::RobotDriveSwerve"的实例与参数列表匹配——参数类型是

jquery - 遍历 jquery 中的嵌套表单元素

c - C 函数可能的返回类型

c++ - 以可变参数函数为参数的函数

c++ - 结构作为函数的参数 : more efficient to copy or dereference?

C++ 什么时候隐式调用函数?如何?

javascript - 使用 jQuery 使表单在禁用后重新启用

java - 如何在不使用 ModelDriven 的情况下从 JSP 填充 POJO