gpt4 book ai didi

C 警告从不兼容的指针类型传递参数 2 of ‘getopt’

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:21 24 4
gpt4 key购买 nike

我用 getopt() 编写了一个函数来从命令行获取选项。当我编译它时,我得到这个警告:

cc1: warnings being treated as errors
csim.c: In function ‘getArg’:
csim.c:157: error: passing argument 2 of ‘getopt’ from incompatible
pointer type /usr/include/getopt.h:152: note: expected ‘char * const*’
but argument is of type ‘const char **’

这是 C 代码:

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
}

int getArg(int argc, char const *argv[], int *verbose, int *ps,
int *pE, int *pb, char *traceFileName){
int arg;
int argCount;
while ((arg = getopt(argc, argv, "vs:E:b:t:")) != -1){
switch (arg){
case 'v':
*verbose = 1;
break;

default:
printf("%s\n", "Illegal command arguments, please input again");
exit(-1);
break;
}
}

if(argCount < 4){
printf("%s\n", "Illegal command arguments, please input again");
exit(-1);
}
return 0;
}

最佳答案

问题是,如错误所述,您传递的是 const char **,而预期是 char * const*。具体来说,您将 argv(类型错误)传递给 getopt。您可以通过更改 argv 的类型来解决此问题。

int getArg(int argc, char * const argv[], int *verbose, int *ps, int *pE, int *pb, char *traceFileName)

关于C 警告从不兼容的指针类型传递参数 2 of ‘getopt’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com