gpt4 book ai didi

C extern struct指针动态分配

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:20 25 4
gpt4 key购买 nike

我试图在 c 中动态分配一个全局结构,但有些东西使我的 c 文件无法找到对外部变量的引用。

日志:

main.c:18: undefined reference to `gate_array'

外部.h

#ifndef EXTERN_H_
#define EXTERN_H_


typedef struct gate_struct {
int out;
} gate;

extern gate *gate_array;


#endif /* EXTERN_H_ */

主.c:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "extern.h"

int main(int argc, char *argv[]){

gate_array = (gate*) malloc (2* sizeof(gate));

return 0;
}

谢谢!

最佳答案

由于extern,没有定义gate_array。在这种情况下,您可以只删除 extern 限定符。但是,如果 extern.h 用于多个翻译单元(#include 在几个 .c 文件中),那么这种方法将导致多重定义错误。考虑添加另一个包含 gate_array 定义(以及任何 future 变量)的 .c 文件,确保只有一个 gate_array 定义。

extern gate *gate_array 告诉编译器有一个名为gate_array 的变量,但它是在别处定义的。但是贴出的代码中没有gate_array的定义。


此外,您不妨阅读 Do I cast the result of malloc?

关于C extern struct指针动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10814797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com