在我看来,即使我在另一个带有extern声明的文件中引用一个函数,gcc仍然可以编译该单元.所以我想知道extern声明是否在函数的任何地方都是必要的?我知道你需要extern变量.
有时我想写一个error()函数,它最终肯定会调用System.exit(),这意味着这个函数永远不会返回.但是,如果我在其他函数中调用error(),我想写如:
int fun() {
...
error();
}
Run Code Online (Sandbox Code Playgroud)
但是编译器坚持在error()调用之后返回一个int值,因为它不知道error()永远不会返回.我肯定会返回一个任意的int,但如果返回类型是一个复杂的类,我需要在代码中构造它,这是浪费时间.有没有办法告诉编译器函数永远不会返回?