首页 > 解决方案 > 在头文件中声明一个指针

问题描述

我需要能够在许多文件中使用指向变量的指针。

我发现我可以在其中一个头文件中声明指针,然后使用来自不同 .c 文件的变量和一个简单的“extern”声明。不幸的是,这不起作用——程序无法编译。但是,如果我翻转顺序(指针作为标头中的外部指针),一切都编译得很好。

我不明白为什么会这样。指针毕竟只是一个变量。我将不胜感激任何提示。

不起作用

文件1.h

int* int_ptr;

文件2.c

#include "file1.h"

extern int* int_ptr;
int_ptr = malloc(sizeof(int));
*int_ptr = 231;

文件3.c

#include "file1.h"

int heap_int;
heap_int = *int_ptr

但以下确实编译:

文件1.h

extern int* int_ptr;

文件2.c

#include "file1.h"

int* int_ptr;
int_ptr = malloc(sizeof(int));
*int_ptr = 231;

文件3.c

#include "file1.h"

int heap_int;
heap_int = *int_ptr

标签: cpointers

解决方案


推荐阅读