echo 'int main;' | cc -x c - -Wall
echo 'int main;' | c++ -x c++ - -Wall
Clang没有发出任何警告或错误,gcc只发出温和的警告:'main' is usually a function [-Wmain]
,但仅在编译为C时才会发出。指定-std=
似乎无关紧要。否则,它可以编译和链接良好。但在执行时,它会立即终止,并显示
SIGBUS
(对我而言)。阅读(优秀)答案中的What should main() return in C and C++?和快速搜索语言规范,我确信需要一个main 函数。但是来自gcc的
-Wmain
的措辞(‘main’ is usually a function)(以及这里的错误缺乏)似乎可能表明另外一种情况。
但是为什么呢?这是某种奇怪的边缘情况或“历史”用途吗?有人知道是什么原因吗?
我想说的是,在托管环境中,我真的认为这应该是一个错误,不是吗?
-pedantic
或任何-std
,都是相同的警告。我的系统c99
也可以编译这个文件而不出现警告或错误... - Geoff Nixonmain
的变量,这不太可能起作用。如果你使用“正确”的值初始化 main,它实际上可能会返回... - Mats Peterssonmain
)。 - Basile Starynkevitchmain=195;
。 - geometrian