在 C++ 模式下将 'c' 输入视为 'c++' 的处理方式

4
抱歉我的问题,我在大学里得到了一份作业,需要用C编程语言编写程序,但是当我在Mac OS上开始时(在学校我们使用OpenSolaris),我遇到了这个问题,我能在没有Unix安装的情况下解决它吗? 控制台输出:截图
MBP-Maxim:cv01 maxim$ g++ main.c 

clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]

Undefined symbols for architecture x86_64:

  "_main", referenced from:
implicit entry/start for main executable


ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

1
调用C编译器而不是C++编译器。g++是C++编译器。 - UnholySheep
2
欢迎来到stackoverflow.com。请花些时间阅读帮助页面,特别是名为“我可以在这里问什么话题?”和“我应该避免提出哪些类型的问题?”的部分。同时,请参观一下阅读如何提出好问题的指南。最后,请阅读此问题清单 - Some programmer dude
5
请将您的错误以文本形式发布,而不是以图像形式。 - Joseph Sible-Reinstate Monica
@JosephSible 我已经发布了。 - M. Khromov
可能是链接C和C++在OS X Mavericks中的重复问题 - Joseph Sible-Reinstate Monica
@JosephSible 是的,谢谢你。我解决了“在C++模式下将‘c’输入视为‘c++’”的问题,但第二个问题“Undefined symbols for architecture x86_64:”仍然存在... - M. Khromov
2个回答

8

你有两个问题:

  1. g++是一款C++编译器。你的源文件是C语言,不是C++。请使用gcc来编译C语言源代码。

  2. 你尝试编译的文件没有main函数,生成可执行文件需要这个函数。请添加一个main函数。


是的,现在我没有这些错误了,什么都没有……就像我写完gcc main.c后的新命令行一样。我有一个主函数“hello world”。 - M. Khromov
谢谢,那真的很有帮助。 - Huyen

1

我来详细解释一下@duskwuff-inactive-的回复。

对于这样的警告:

clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]

你的文件名应该是main.c而不是main.cpp或者main.cc,如果使用g++编译器进行编译,或者使用gcc编译器编译main.c


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接