我是编码函数,它将两个字符数组和整数分割成一个字符串,并返回指向新字符数组的指针,但是在编译时,我得到了以下警告:
警告:赋值使指针在没有强制转换的情况下从整数生成。 mapfile = world_to_char(“map/”,map,".bin“); (2)必然的产品
这是我的代码,前两行是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;
}我为什么要收到这个警告?我返回的指针不是整数。
发布于 2016-01-08 22:04:19
world_to_char()很可能是在main()之后定义的,添加了一个函数原型,它应该可以工作。所以在main()添加以下内容之前
char *world_to_char(char *dir, int number, char *ext);无论如何,带有"java“样式char dir[]的参数都将成为指针,因此,让我们将它们改为char *dir来说明问题。
错误消息是由于隐式声明造成的,因为编译器在调用函数时没有看到声明,它假设函数返回int,因此将int分配给char *是从一个整数生成一个没有强制转换的指针。
https://stackoverflow.com/questions/34686878
复制相似问题