在标准C++中,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]]
。