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

0 c printf argv

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

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

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

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

Uns*_*ned 7

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

int main(int argc, char **argv);
int main(int argc, char *argv[]); // Functionally equivalent to above
Run Code Online (Sandbox Code Playgroud)

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

我个人更喜欢上面列出的第二种形式,因为我发现它char*比第一种(指向char*)更直观(数组),但由于数组只是C中的指针算术,否则它们都可以.


Buf*_*low 5

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

包含句子也是错误的.有了#include "file.h"它,它将file.h在当前文件夹中进行处理,但是如果你要包含来自C标准库的头文件,它应该是#include <file.h>.

  • 符号"#include"stdio.h"`通常可以正常工作,但你是正确的,标准使用`#include <stdio.h>`你也应该这样做,除非有特别的理由不这样做. (2认同)