警告:格式'%s'需要'char *'类型的参数,但参数2使用argv类型'int'

时间:2015-06-15 22:37:52

标签: c printf argv

我甚至不知道发生了什么,我刚刚开始了一个新项目,并设置了一只基本的猫只是为了确保一切正常,而且发生了这种情况。

#include "stdlib.h"
#include "stdio.h"

int main(int argc, char *argv) {
    printf("%s",argv[0]);
    return 0;
}

就是这样,我重新安装了gcc,g ++和两个multilibs。我真的不知道该怎么想。

2 个答案:

答案 0 :(得分:7)

声明的argv类型错误。 main的签名应该是以下之一:

int main(int argc, char **argv);
int main(int argc, char *argv[]); // Functionally equivalent to above

请注意,main也可以void忽略参数,但这不是您在这里寻找的。

我个人更喜欢上面列出的第二种形式,因为我发现它更直观(char*的数组)与第一种形式(指向char*的指针),但由于数组只是C中的指针算术,会做的。

答案 1 :(得分:5)

main函数的第二个参数通常定义为char **argvchar *argv[];两种方式都是正确的。

包含句子也是错误的。使用#include "file.h"时,它会在当前文件夹中查看file.h,但如果您要包含C标准库中的头文件,则该文件应为#include <file.h>