我在这里看过几个例子,我仍然对此感到满意。我的头文件中有一个extern int *sharedarray[]
。我在我的三个int *sharedarray[]
文件中将其定义为.c
。在我的第一个.c
文件中,我使用malloc
分配了需要多少内存。必须在该点动态分配。之后我设置了值。出于测试的目的,我只是将它们递增1.然后,另一个.c
文件,我转到print
数组。什么是0,1,2,3已成为0,3,2,2?
我完全不知道这里发生了什么。我确信这很简单,但它已经阻止了我超过4个小时了。有谁知道我应该做什么?
header.h
extern int *array[];
file1.c中
int *array[];
file2.c中
int *array[];
我的make文件使用:
file1: $(proxy_obj) file2.o, header.o
答案 0 :(得分:2)
请执行以下操作....
header.h
extern int* array;
file1.c中
// ... in code
// declared globally
int* array;
// in your function...
// numInts contain the number of ints to allocate...
array = (int*)malloc( numInts, sizeof( int ));
// set the values...
array[ 0 ] = 0;
array[ 1 ] = 1;
array[ 2 ] = 2;
file2.c中
#include "header.h"
//... in your function, print out values
printf( "Values are %d,%d,%d\n", array[ 0 ], array[ 1 ], array[ 2 ] );
通过阅读您的请求,您需要一组int,并且能够在两个源文件之间使用它们。
希望这可以帮助您解决问题, 感谢
PS - 请仅使用上面的代码作为示例 - 我也在工作中快速写了这个 - 所以请原谅任何拼写错误或错误。