我在 a.cpp 文件中定义一个数组
int a[] = {1,2,3};
a.h 文件中声明外部引用这个数组
extern int a[];
在 b.cpp 文件中引入 a.h 文件,并做如下代码
int nSize = sizeof(a) / sizeof(a[0]);
上面的代码编译错误 C2070.换句话说无法在 b.cpp 中直接取得数组 a 的大小,只好在 a.cpp,a.h 文件中实现,声明一个函数来取得数组 a 的大小了。如在 a.cpp 中实现
int GetArraySize(void)
{
return sizeof(a) / sizeof(a[0]);
}
在 a.h 中声明
int GetArraySize(void);
这样在 b.cpp 中就可以调用 GetArraySize 函数了。
但如果改成
int a[10] = {1, 2, 3, 4}; 的形式就没有问题了
extern int a[10];