此帖出自嵌入式系统论坛
最新回复
求证了几个老大后,得到的结论是:sizeof只能对确切的声名结构取长度.而extern char a[]这个声名给出的信息不够完整.
另外在这本圣经里对sizeof的解释里有这么一句:此运算符不能用于函数类型和不完整的类型的操作数.
因此,extern char a[]这个不能给出完整信息的声明,编译器不主动去记录和猜测.它罢工了...
别说跨文件,哪怕是下面这个代码,sizeof也不能正常工作
//代码
#include
extern char a[];
int main()
{
printf("lenght :%d",sizeof(a));
}
char a[] = "1,2,3,4,5";
//结束
想达到LZ的想法,用CPP到用时再定义,要么就只能重新实现编译器...
好运...
详情
回复
发表于 2007-9-26 12:54
| ||
|
||
| |
|
|
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
此帖出自嵌入式系统论坛
| ||
|
||
| |
|
|
此帖出自嵌入式系统论坛
| ||
|
||
EEWorld Datasheet 技术支持