我是编码函数,它将2个char数组和整数分成一个字符串并返回指向新char数组的指针,但是在编译时我收到了这个警告:
警告:赋值使用整数而不使用强制转换
mapfile = world_to_char(“maps /”,map,“。bin”);
^
这是我的代码,前两行是文件中的行,gcc向我发出警告:
char *mapfile;
mapfile = world_to_char( "maps/", map, ".bin" );
和功能(我知道它仅适用于[0; 99]中的数字,但对我来说已经足够了):
char *world_to_char( char dir[], int number, char ext[] ) {
char id[ 3 ] = { 0, 0, 0 };
if( number > 9 ) {
id[ 1 ] = ( number % 10 ) + '0';
number /= 10;
}
id[ 0 ] = number + '0';
char *map;
map = malloc( MAX_MAP_FILENAME * sizeof( char ) );
strcpy( map, dir );
strcat( map, id );
strcat( map, ext );
return map;
}
为什么我收到这个警告?我正在返回指针而不是整数。
答案 0 :(得分:3)
可能world_to_char()
在main()
之后定义,添加一个函数原型并且它应该可行。所以在main()
添加此
char *world_to_char(char *dir, int number, char *ext);
参数" java "样式char dir[]
无论如何都会成为指针,所以让我们通过将它们更改为char *dir
来表明它。
错误消息是因为隐式声明,因为编译器在调用函数时没有看到声明它假定它返回int
,因此赋值{{ 1}}到int
正在从一个没有强制转换的整数中生成一个指针。