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]]
。
弃用的主让我的日子 –
@PserserBy这是旧学校。现代程序员编写的代码在静态初始化中完成执行。 – Yakk