C++ 最小C++;将编译的程序

C++ 最小C++;将编译的程序,c++,C++,功能并不重要 我相信就是这样 int main(){} 使用gcc编译,无警告。 这将编译,但不会链接。;) 以下各项应为最短的: int main(){} 请注意,只有使用main()即int main(){},才可以省略返回值而不调用未定义的行为,尽管我确信这个问题将被否决/关闭非常简单:main();这是在数字环境下编译的最小程序mars@tu他说:“这并不能使它成为一个有效的C++或一个完整的C++程序。”功能并不重要。我的英语很差,我认为我接受了这一点,认为这是不完整的:D@clo

功能并不重要

我相信就是这样

int main(){}
使用gcc编译,无警告。

这将编译,但不会链接。;)


以下各项应为最短的:

int main(){}


请注意,只有使用
main()

int main(){}
,才可以省略返回值而不调用未定义的行为,尽管我确信这个问题将被否决/关闭非常简单:main();这是在数字环境下编译的最小程序mars@tu他说:“这并不能使它成为一个有效的C++或一个完整的C++程序。”功能并不重要。我的英语很差,我认为我接受了这一点,认为这是不完整的:D@closevoters:正如你投票时看到的,这个问题只有一个正确答案。换句话说,你在投票时所说的话,已经被你投票时所掌握的信息所驳倒。请发表评论,并解释为什么你仍然选择投票,而当时你必须知道这个意见与现实有直接冲突?这是不可能的。您必须返回am int值。@MihaiTodor:No,
main
的隐式返回值是
0
。在
之间有一些多余的空格{
@CharlesBailey别学究气了:P@MihaiTodor:为什么不呢?这是一个常用功能。它通常在不需要返回值的程序中使用,并避免未定义的行为。它可以编译,但它不是一个完整的程序。标准不允许
main
fn离开体在VS2010中,您会得到此错误LNK2019:未解析的外部符号,在函数yx.tMnCRTSTARTUP中主要引用。问题是“什么是最小的C++程序,它将编译而不出错”编译器没有被指定。该行编译无错误。我知道这很愚蠢。但是我认为它会减少。question@Haile你没有发布C++程序,因为(通常假设托管实现)“一个程序应包含一个名为
main
”的全局函数,而单靠声明并不能定义这样一个函数。但它不是一个完整的程序,因此(技术上)不是对该问题的有效答案。“一个程序应包含一个名为
main
”的全局函数。”@查理贝利:嗯,如果你坚持“计划”,那是真的问题的一部分。哦,不管怎么说,这都是一个笑话。然而,一个空文件赢得了最小的自我复制程序的冠军。该文件不包含任何内容,试图编译和运行它也不会产生任何内容。这很可能是一个独立环境下的完整程序。这可以链接fwiw。
g++-Wl,--defsym=\u start=_exit-Wl,--undefined=_exit-nostartfiles-static-o blargh t.cpp
注意,它是否确实编译并链接而不出错取决于工具链。特别是,微软的工具链默认情况下不会为最常见的Windows可执行文件“GUI子系统”链接它为此,必须使用不太有文档化的链接器选项<代码> />:McCurtStudio。@ CelthHthth.-阿尔夫,C++标准很清楚,<代码>主()/<代码>必须定义为返回<代码> int <代码>,但是,唯一地,不需要<代码>返回< /C> >语句:“如果控件到达
main
末尾时未遇到
return
语句,则执行
return 0;
”此引文逐字取自ISO/IEC 14882:2003(E)的§3.6.1¨5;IIRC 2011标准中的措辞是相同的。除了使用新标准的
noreturn
属性外,声明为返回值的任何其他函数都不能忽略
return
语句;
main()
在这方面是完全特殊的。-1因为”请注意,忽略返回值而不调用未定义的行为仅适用于main()。“无论是在字面意义上还是在非常友好的原谅解释下都是不正确的,OP拒绝修复它。我谨声明,我不能“拒绝”"修正答案,因为没有人要求我这么做。作为对你的评论的回应,我很高兴地澄清,它指的是返回值的函数。如果其他人发现原始措辞不准确,我谦恭地表示歉意。@Alf:你能提供建设性的意见,说明什么措辞可以使声明正确,同时保持从
main()
结尾流出是定义良好的行为(相当于
返回0
),从值返回函数结尾流出是未定义的行为(相当于
返回
,没有值)。
~/blargh
16:48:24 $ cat t.cpp


~/blargh
16:50:21 $ clang++ -c t.cpp 
~/blargh
16:50:28 $ 
int main(){}