【发布时间】:2013-02-26 07:30:04
【问题描述】:
有那么一刻,我为自己编写了我的第一个可能没有错误的 C 程序感到非常自豪。 这是完整的源代码:
int main;
即使没有int,它也能完美编译,但会发出警告(即使没有-Wall),作为一个以无错误程序为目标的程序员,我将它们视为错误。
愉快地编译了这个应用程序后,我立刻赶忙启动它。令我惊讶的是,出现了分段错误错误...
现在说真的。 到底发生了什么?
我的猜测如下:是缺少main的定义。这很明显,但编译器允许这样做。好的,main 可以在不同的单元中定义。但即使是链接器也没有做任何事情。有什么特别的原因吗?
【问题讨论】:
-
我认为问题在于你只定义了原型而不是函数本身,但是等等:你只定义了一个变量而没有函数。到目前为止,入口点还没有定义。
-
这个explanation on Reddit 可能会有所帮助。
-
这取决于您编译程序的方式和位置。托管环境程序需要
main,但独立环境程序不需要。 -
关于警告:
gcc -Wall -g -o main main.c给我main.c:1: warning: ‘main’ is usually a function(使用gcc (Debian 4.4.5-8) 4.4.5)。 -
@DCoder 您(或原始发帖人)可能应该引用链接的解释作为这个问题的答案。
标签: c gcc segmentation-fault