gpt4 book ai didi

c - "different width due to prototype"警告是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 17:10:17 25 4
gpt4 key购买 nike

生成警告的代码,传递了由于原型(prototype)不同宽度的 'isHex' 的参数 1:

/* Checks if a character is either 0-9 or A-F */
int isHex(char ch) {
return isdigit(ch) || (ch >= 65 && ch <= 70);
}

/* Checks if a string only contains numeric characters or A-F */
int strIsHex(char * str) {
char *ch;
size_t len = strlen(str);
for(ch=str;ch<(str+len);ch++) {
if (!isHex(*ch)) return 0;
}
return 1;
}

这是什么意思,char 值不应该是相同的宽度吗?如何将它们转换到相同的宽度以防止出现此警告?

顺便说一下,gcc 命令是:gcc.exe -std=c99 -fgnu89-inline -pedantic-errors -Wno-long-long -Wall -Wextra -Wconversion -Wshadow -Wpointer-arith -Wcast -qual -Wcast-align -Wwrite-strings -fshort-enums -gstabs -l"C:\program files\quincy\mingw\include"-o main.o -c main.c

我无法从 gcc 中删除任何警告选项,因为作业的标记标准之一是此命令没有错误或警告。

谢谢。

最佳答案

这是由于命令行上的 -Wconversion 标志。它会弹出“如果原型(prototype)导致的类型转换与没有原型(prototype)时相同参数发生的类型转换不同”。由于默认的整型参数类型是 int,您不能声明 isHex(char ch) 而不触发它。

我认为你有两个选择:声明 isHex(int ch) 并让它在调用中加宽或者声明它 isHex(char *ch) 并且改变电话。

附言如果这是家庭作业,则应如此标记。

关于c - "different width due to prototype"警告是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509406/

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