C++ C+;中主函数对应的编译时错误+;

C++ C+;中主函数对应的编译时错误+;,c++,compiler-errors,linker-errors,C++,Compiler Errors,Linker Errors,这是我的编译命令,后面是我收到的错误消息。 您可以看到代码的链接也附在后面。 g++-Wall`root配置--cflags--ldflags--libs`stevenjohnson doubleintegration.cpp /usr/lib/gcc/i686 redhat linux/4.9.2/../../../../../crt1.o:在函数“\u start”中:(.text+0x18):对“main”的未定义引用 collect2:错误:ld返回了1个退出状态 错误未定义对m

这是我的编译命令,后面是我收到的错误消息。 您可以看到代码的链接也附在后面。

g++-Wall`root配置--cflags--ldflags--libs`stevenjohnson doubleintegration.cpp

/usr/lib/gcc/i686 redhat linux/4.9.2/../../../../../crt1.o:在函数“\u start”中:(.text+0x18):对“main”的未定义引用
collect2:错误:ld返回了1个退出状态


错误未定义对main的引用意味着在链接时,没有
main()
函数

查看示例代码,有一条注释说:

使用-DTEST_INTEGRATOR编译以生成这个小测试 节目。

用法:./integrator
式中=#尺寸,=相对公差,
三个测试被积函数为0/1/2(见下文), 和是最大#函数求值(0表示无)

查看代码,除非定义了此符号,否则主函数将从构建中排除

因此,将
-DTEST\u INTEGRATOR
添加到命令行以进行编译。您可能还需要一个
-o积分器
使输出名为
integrator
,而不是
a.out

g++-DTEST\u INTEGRATOR-Wall`root配置--cflags--ldflags--libs`stevenjohnson doubleintegration.cpp-o INTEGRATOR

C++!=C.将标签用于您实际使用的语言,而不是仅仅抓住任何看起来类似的旧标签。标记在这里是有意义的,使用正确的标记很重要。同样重要的是,在你的问题中要清楚——标题C和文本表示C++,标签都表示。您似乎没有任何
main()
函数。该链接中可能有很多代码重复…我包含了main函数,但没有解决问题。谢谢,我应该更加小心,因此,如果某些代码使用C时很旧,那么这是真的吗,它可能不是使用C++命令工作的?这是真的,不是所有的C都会编译成C++,但是通常C可以编译为C++(具体来说,C代码使用C++中不存在的C标准版本的特征,或者C++代码中使用C++保留的单词)。一般来说,我建议C++编译器使用C代码,不必担心它,但是你的问题不是C++ VS C问题。两者都允许通过预处理器定义有条件地编译代码。