【发布时间】:2016-12-19 19:10:12
【问题描述】:
我最近在升级 debian 测试并获得 gcc 6.2.1 编译器后编译一段代码时遇到了问题。我把它归结为这个简单的例子:
inline int func(void) {
return 0;
}
int main (int argc, char **argv) {
func();
}
代码确实不编译如下:
gcc -o exec code.c # gcc 6.2.1
它失败了:
undefined reference to 'func'
我也在同一台主机上尝试过使用 gcc 4.8、4.9 和 5,但都失败了。 如果我添加它会编译:
gcc -o exec code.c -O2 # gcc 6.2.1
我真的很好奇为什么它与 -O2 标志一起工作,但不是没有,我希望这能工作?
【问题讨论】:
-
你是什么意思“[t]他的代码不编译”?你得到什么错误?请编辑您的问题以包含编译器的完整、完整和未经编辑的输出。
-
我们必须重复多少次
inline所做的事情......说真的...... -
您的程序无法编译,因为
func中没有return语句。功能。编译器的错误信息非常清楚。 -
我猜这个问题已经在其他问题中得到了回答,所以如果您愿意,可以将其删除,但是,Sumit 下面的回答比我见过的大多数其他回答都要好。跨度>
标签: c gcc optimization inline gcc6