tcp.c: In function ‘SocketDataHandle’: tcp.c:50:25: warning: comparison of distinct pointer types lacks a cast [enabled by default] char * str = datahandle == recv ? "recv" : "send";
时间: 2024-01-24 15:17:23 浏览: 85
这个警告是因为在第50行,你在比较两个不同类型的指针,而没有进行显式的类型转换。可能是因为 `datahandle` 和 `recv` 是不同的指针类型,所以编译器会发出警告,建议你在比较之前进行类型转换,或者确定两个指针的类型相同。例如:
```
char * str = (char *)(datahandle == recv ? "recv" : "send");
```
这样就可以避免编译器发出警告了。
相关问题
tcp.c:50:33: warning: comparison of distinct pointer types lacks a cast [enabled by default] char *str =(char *) (datahandle == recv ? "recv" :"send");
这个警告是因为你在比较两个不同类型的指针,即 `datahandle` 和字符串字面量 `"recv"` 或 `"send"` 的指针类型不同。为了解决这个问题,你可以将字符串字面量强制转换为与 `datahandle` 相同的类型,如下所示:
```
char *str = (char *)(datahandle == recv ? (void *)"recv" : (void *)"send");
```
这里使用 `void *` 指针类型进行了强制转换,这样就可以避免警告。
packages/amlogic/LibPlayer/amplayer/player/player.c:1553:13: error: static declaration of 'check_use_double_write' follows non-static declaration packages/amlogic/LibPlayer/amplayer/player/player.c:1387:9: note: previous implicit declaration of 'check_use_double_write' was here packages/amlogic/LibPlayer/amplayer/player/player.c: In function 'check_di_strong_dm': packages/amlogic/LibPlayer/amplayer/player/player.c:1597:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] packages/amlogic/LibPlayer/amplayer/player/player.c: In function 'check_top_botom_invert': packages/amlogic/LibPlayer/amplayer/player/player.c:1674:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] packages/amlogic/LibPlayer/amplayer/player/player.c: In function 'player_thread': packages/amlogic/LibPlayer/amplayer/player/player.c:1976:5: warning: implicit declaration of function 'avpkt_cache_init' [-Wimplicit-function-declaration] packages/amlogic/LibPlayer/amplayer/player/player.c:1996:13: warning: passing argument 4 of 'send_event' makes integer from pointer without a cast [enabled by default] In file included from packages/amlogic/LibPlayer/amplayer/player/player.c:20:0:
这个错误提示包含多个信息,其中主要的错误是“static declaration of 'check_use_double_write' follows non-static declaration”,意思是在 player.c 文件中,定义了同名的函数 check_use_double_write,一个是非静态的,一个是静态的,造成了冲突。
另外还有多个警告提示,可以先忽略。
解决方法是将其中一个函数的声明修改为与定义的类型一致,或者将其中一个函数的声明修改为静态声明,以避免编译器的冲突。
例如,如果你有以下代码:
```c
void check_use_double_write(); // 声明一个非静态函数
static void check_use_double_write() { // 静态定义一个同名函数
// 函数体
}
```
可以将声明修改为静态声明:
```c
static void check_use_double_write(); // 静态声明一个函数
static void check_use_double_write() { // 静态定义一个同名函数
// 函数体
}
```
或者将定义修改为非静态定义:
```c
void check_use_double_write() { // 非静态定义一个函数
// 函数体
}
static void check_use_double_write() { // 静态定义一个同名函数
// 函数体
}
```
阅读全文