c - 从不兼容的指针警告初始化

标签 c pointers

我有一个警告,但我不明白为什么:

void stampaCon(){
pthread_mutex_lock(&mutexCon);

  printf("lista dei connesi: \n");
  int i;
    for(i=0; i<=MAX_CONNECTIONS*8; i++){
        if(arrayCon[i]!=NULL){
            TipoListaReg *s = NULL;

            s = arrayCon[i]; //gives me a warning

            printf("utente %s\n", arrayCon[i]->utente);
            while(s->next!=NULL){
                printf("utente %s\n", s->next->utente);
                s=s->next;
            }
        }
    }

    pthread_mutex_unlock(&mutexCon);

TipoListaReg 结构是:

typedef struct NodoListaReg { 
  char utente[MAX_NAME_LENGTH+1];
  int connesso; 
  ListaPendente *msgs;
  struct NodoListaReg *next;
} TipoListaReg;

arrayReg 是一个全局变量,定义为:

TipoListaReg *arrayReg[512];

这是一个 ListaPendente 结构体:

typedef struct pendenti{ 

  char msg[MAX_MSG_SIZE];
  char mittente[MAX_NAME_LENGTH+1];
  int type;
  struct pendenti *next;
}ListaPendente;

警告是:

warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]

最佳答案

您的问题中确实没有足够的信息,但是编译正常,没有警告:

typedef struct ListaPendente  // made up definition by me as you didn't provide
{                             // the definition of ListaPendente 
  int dummy;
} ListaPendente ;

typedef struct NodoListaReg {
  char utente[100];           // MAX_NAME_LENGTH replaced by 100 as it is not relevant
  int connesso;
  ListaPendente *msgs;
  struct NodoListaReg *next;
} TipoListaReg;

TipoListaReg *arrayReg[512];

int main()
{
  int i = 0;
  TipoListaReg *s = arrayReg[i];    // no warning here
}

但是代码不会做任何有用的事情

关于c - 从不兼容的指针警告初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964222/

相关文章:

使用指针将浮点矩阵复制并转换为 double 矩阵

c - 当我将它用作函数返回类型或参数时,为什么我应该使用 typedef enum

c - C编程的良好礼仪

c - 需要在 C 中的源文件之间共享文件指针的方法

c - 从链表中删除某些数字(递归)

原始指针 getter 的 C++11 const 正确性

java - 在 C++、Java、C# 之间循环初始化变量作用域

c - ZeroMQ - 模拟多个客户端到一台服务器的标准套接字

c - 初始化匿名指针数组

c - 矩阵、指针、C*