繁体   English   中英

为结构分配内存

[英]allocating memory for a structure

gcc 4.4.4 c89

我一直收到“无法取消引用不完整的类型”。

但是,我确定我的结构类型完整。 我返回Network_t实例,该实例是指向已分配内存的指针。 我应该可以取消引用该内存。

非常感谢您的任何建议,

我的头文件中有此文件:driver.h

typedef struct Network_t Network_t;
Network_t* create_network(int id);

实施文件driver.c

#include "driver.h"

struct Network_t {
    int id;
};

Network_t* create_network(int id)
{
    Network_t *network = malloc(sizeof *network);

    if(network) {
        network->id = id;
    }
    return network;
}

在我的main.c中

#include "driver.h"

Network_t *network = NULL;
network = create_network(1);
printf("Network ID: [ %d ]\n", network->id); /* Cannot dereference pointer to incomplete type */

main.c ,仅可见struct Network_t的前向声明。 要从指向struct Network_t的指针访问id ,您需要对struct Network_t的定义在您取消引用该点时可见。

您可以将定义从driver.c移到driver.h

这个作品

在driver.h中

#include <stdio.h>
#include<stdlib.h>
 struct Network_t{

     int id;

 };
 Network_t *create_network( int id){
     Network_t *network=(Network_t *)malloc(sizeof(network));

     if (network){
         network->id=id;
     }
      return network;

 }

在Network.cpp中

#include <iostream>
#include "driver.h"
using namespace std;
int main(){

    Network_t *network=NULL;
     network=create_network(1);
     printf("Network ID:[%d]\n",network->id);
     return 0;
}

结果:

Network ID:[1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM