最近我开始解决在线评委的问题,例如UVA Online Judge。我尝试用 C++ 解决这些问题,并使用 xCode IDE 编写代码。
但是,当我在代码中使用一些 C 函数(例如 printf 或 scanf)时,xCode 不会抱怨并且一切运行正常,但是,当我将代码提交给法官时,它正在使用 GNU C++ 4.5.3 进行编译,并且它给出了编译错误。问题是我必须包含 cstdio 标头。
xCode 没有对这个小错误给出任何警告,这有点烦人。有什么办法可以打开这些错误吗?那么当我使用需要标头的函数时,它会给出警告或错误?
谢谢!
问题是由
LLVM
编译器的头文件集引起的。 <iostream>
包含 <ios>
,其中包含 <cstdio>
,这将导致 printf
的声明出现。
如果您使用标志
-std=gnu++0x
编译 cpp 代码,则在 Linux 上的 g++
下它会成功编译。
我认为没有一个选项会在 MacOS X 上触发相同的错误,除非您安装了 gcc 的完整副本,包括 gcc 标头,因为该标头隐式包含在
<ios>
的
LLVM
标头中
在这种情况下,您应该执行
#include <cstdio>
以确保函数已声明,并且这也适用于 gnu gcc 编译器。