在每个文件中都重新定义指针变量,避免出现同名变量、同指针变量的情况,或者利用头文件中的extern关键字和定义文件中的static关键字,将指针变量声明放在头文件中,在定义文件中定义静态变量。具体示例如下:
头文件 file.h
#ifndef FILE_H
#define FILE_H
extern int *ptr;
#endif
定义文件 file1.c
#include "file.h"
#include <stdlib.h>
static int value = 10;
void func1(){
ptr = &value;
}
定义文件 file2.c
#include "file.h"
#include <stdio.h>
void func2(){
printf("%d", *ptr);
}
主文件 main.c
#include "file.h"
int *ptr;
int main(){
func1();
ptr = &value;
func2();
return 0;
}
在这个示例中,ptr被定义在头文件中,并被声明为extern,指向定义文件中的static变量value。每个定义文件中的func1和func2都可以操作ptr指向的value,并且在主文件中也可以通过ptr访问到它。这样避免了指向相同地址但不同值的问题。