main()及其参数可以有属性吗?

问题描述:

在标准C++中,main函数及其参数是否可以具有属性?main()及其参数可以有属性吗?

例如,这是以下法律?

[[noreturn]] int main() { std::abort(); } 

或类似

[[nodiscard, carries_dependency]] 
int main(int argc [[maybe_unused]], 
     char * argv [[carries_dependency, maybe_unused]] []) 
{ /* ... function body omitted ... */ } 

是的,这是合法的。 C++标准([basic.start.main],[dcl.attr]或其他地方)中没有任何措辞来防止发生这种情况。如果需要,甚至可以将main()标记为[[deprecated]]

+2

弃用的主让我的日子 –

+2

@PserserBy这是旧学校。现代程序员编写的代码在静态初始化中完成执行。 – Yakk