sky__sea 发表于 2017-02-16 09:26

关于未知大小数组的extern问题

请教一个比较弱智的问题,我在文件m定义了一个数组,大小并没有确定,如下;
int a[]={1,2,3,4};
现在我想在文件b引用a[],请问怎么定义,我用extern a[], extern *a,都不行,对于这种情况有什么办法吗?我不打算把a定义成固定大小的数组,谢谢。

MMMIX 发表于 2017-02-16 09:49

回复 1# sky__sea

用 extern int a[]; 就可以了。

sky__sea 发表于 2017-02-16 10:47

不行的,编译报错。

sxcong 发表于 2017-02-16 10:52

int *a;

a可以是固定数组,也可以自己new的动态数组。
不过,从使用上来讲还是vector更方便

folklore 发表于 2017-02-16 10:59

传说中的TC?

基本上extern int a[];一定可以的。
什么编译器都不讲, 讲个P啊。

PS:楼主是Link错吧?本来只想编译却同时Link了???????????????????????????????????

sky__sea 发表于 2017-02-16 11:22

extern的时候没错,但是代码里有sizeof(a)的时候编译就会报错,error: invalid application of 'sizeof' to incomplete type 'int[]'

folklore 发表于 2017-02-16 12:05

invalid application of 'sizeof' to incomplete type:

编译器也不知道a的大小啊, 不能sizeof.
它的size要通过其它方法传入。

folklore 发表于 2017-02-16 12:08

invalid application of 'sizeof' to incomplete type:

编译器也不知道a的大小啊, 不能sizeof.
它的size要通过其它方法传入。

比如:
-- a.cpp --
int a[]={1,2,3,4,5,};
int size_a =sizeof(a)/sizeof(a);

-- b.cpp --
extern int a[];
extern int size_a;
for(int i=0; i<size_a; i++){
printf("%d ", a);
}

sky__sea 发表于 2017-02-16 14:04

我的意思是有没有通用的办法,sizeof在本文件内是有效的,但是其他文件extern不行,如果没有,那我只好其他文件换个处理方式了,谢谢楼上。

hanxin83 发表于 2017-02-16 15:08

在数组实际定义的文件里, 加一个get_a_size的函数给别的文件用~
基本和妇科老人的方法是一样~
页: [1] 2
查看完整版本: 关于未知大小数组的extern问题