2

编译器对以下代码段显示以下警告。请帮我改正。

if((tmp_n = (struct dot *)shmat(shm_net, NULL, 0)) == (int *) -1) { }
警告:不同指针类型的比较缺少强制转换 [默认启用]

它是一个 C 程序,此代码段用于将共享内存段附加到指针 **tmp_n,该指针的类型为 struct dot。

结构点{int权重;诠释 tmv;};

4

2 回答 2

3

试试这个

if((tmp_n = (struct dot *)shmat(shm_net, NULL, 0)) == (void *) -1) { }

并查看手册页,它指出:

Return Value
On success shmat() returns the address of the attached shared memory segment; 
on error (void *) -1 is returned, and errno is set to indicate the cause of the error. 
于 2013-05-02T06:39:09.500 回答
2

您需要转换-1为与您要比较的变量相同的指针类型:

if((tmp_n = (struct dot *)shmat(shm_net, NULL, 0)) == (struct dot *) -1) { }
于 2013-05-02T06:41:29.293 回答