注册 登录
编程论坛 C++教室

一个奇怪的sizeof运算错误问题

夜风依旧 发布于 2009-10-05 16:30, 955 次点击
现在有三个文件
//config.h
extern LPCSTR AlphaTable[];
...

//config.cpp
LPCSTR AlphaTable[] = {0};
...

//xx.cpp
#include"config.h"
int n = sizeof(AlphaTable)/sizeof(AlphaTable[0]);
...

编译出错:error C2070: 'LPCSTR []': illegal sizeof operand

而且如果直接在xx.cpp中
LPCSTR AlphaTable[] = {0};
int n = sizeof(AlphaTable)/sizeof(AlphaTable[0]);
这样就没错

这是什么道理啊???????????????
4 回复
#2
haitao99992009-10-05 19:31
试了下你的程序,可能编译器的原因,报的错误不一样。你用的什么编译器?我用的MinGW。
#3
夜风依旧2009-10-05 19:57
回复 2楼 haitao9999
我用的是vc9,而且在vc6上编译也是这个错,
现在已经有了一个解决方法,就是
extern LPCSTR AlphaTable[10];

先给出数组大小,

这样做很难看,所以换成这样:
extern LPCSTR AlphaTable[];
extern const int AlphaTableSize;

不知道有没有更好的解决方法。。。



[ 本帖最后由 夜风依旧 于 2009-10-6 11:09 编辑 ]
#4
flyingcloude2009-10-05 20:37
数组初始化就要确定大小,要么用指针进行动态分配内存
#5
haitao99992009-10-05 21:04
4楼说得对,没有明确数组大小,这是关键问题。
1