我可以使用主函数参数的属性还是它是实现定义的?
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/