【发布时间】:2012-06-23 16:07:52
【问题描述】:
我有一个比较两个字符串的基本程序:
#include <string>
#include <iostream>
using namespace std;
int main (int argc, char *argv[]) {
if(strcmp (argv[0],"./test") != 0) {
cout << "not equal" << endl;
} else {
cout << "equal" << endl;
}
return 0;
}
它可以用 gcc 编译,但不能用 clang 编译:
> clang -o test test_clang.cpp
test_clang.cpp:7:6: error: use of undeclared identifier 'strcmp'
if(strcmp (argv[0],"./test") != 0) {
^
1 error generated.
为什么不能用 clang 编译?
编辑:人们对堆栈溢出越来越苛刻,以至于我正在犹豫是否要发布问题。上面的问题有一个简单的答案,很好,但是因为他们有一个简单但不明显的答案而对问题投反对票(在第一分钟两次!)是正常的吗?
【问题讨论】:
-
我不知道为什么人们不赞成这个。它已明确说明并且是一个有效的问题。
-
“这个问题没有显示任何研究工作”。 Google 中第一次点击“strcmp”有一个带有
#include <string.h>的代码示例(这也是一个有效的解决方案)。最少的研究会回答这个问题。这就是我否决它的原因。琐碎的问题会降低这个网站的价值。 -
做一个最小的例子并比较两个编译器的结果是研究工作。
-
在发布之前,我将 Google 上第一个示例的代码复制并粘贴到一个文件中,并认为“我应该像我为 iostream 所做的那样从包含中删除这些 '.h'”。我错了,但肯定不是懒惰。此外,我的最小示例与 gcc 一起使用,因此我感到很惊讶。我认为您得出结论并判断我和我对此的意图有点快。
-
好的,没问题,我会读一下 :) 我想如果否决票附带评论来解释为什么它被否决,那会有所帮助。让我们忘记这一切吧。