1.这一章讲解了结构数组的用出问题:
struct key {
char *word;
int count;
} keytab[NKEYS];
2.随后讲解了NKEYS的机器自动计算问题
#define NKEYS (sizeof(keytab) / sizeof(keytab[0]))
但是这两天放在一个c文件中编译时不管谁放在前面(NKEYS和keytab)这两个变量之间总有一个是未定义的让我很恼火,这是鸡生蛋的悖论啊?这一章的代码能编译成功吗?
1.这一章讲解了结构数组的用出问题:
struct key {
char *word;
int count;
} keytab[NKEYS];
2.随后讲解了NKEYS的机器自动计算问题
#define NKEYS (sizeof(keytab) / sizeof(keytab[0]))
但是这两天放在一个c文件中编译时不管谁放在前面(NKEYS和keytab)这两个变量之间总有一个是未定义的让我很恼火,这是鸡生蛋的悖论啊?这一章的代码能编译成功吗?
给自己回一下,我突然想到了问题所在看到的大神看我判断的对不对,书中定义了
struct key {
char word;
int count;
} keytab[] = {
"auto", 0,
"break", 0,
"case", 0,
"char", 0,
"const", 0,
"continue", 0,
"default", 0,
/ ... */
"unsigned", 0,
"void", 0,
"volatile", 0,
"while", 0
};
也就是说书中先初始化一个结构,然后拿#define NKEYS (sizeof(keytab) / sizeof(keytab[0])) 来计算NKEYS就是这样的吧?
突然结合本例子的目的是为了统计关键词出现的次数大概搞清楚了。