C语言出现无法解析的外部命令情况是怎么回事,我把结构数据的声明和定义都放在头文件中:

#ifndef _FINDFILE_H#define _FINDFILE_H#include<stdio.h>#undef UNICODE#include<windows.h>struct DirList { char table[256]; DirList *pNext;};extern DirList *first, *last, *newlist;#endif结果就出现无法解析的外部命令,看图片吧,由extern DirList *first, *last, *newlist;定义的三个结构都无法用,就算改成extern struct DirList *first, *last, *newlist也还是一样。

这个extern是声明而非定义,它表示first在别的某处,肯定是你在别的地方没有定义。
你可以在和该头文件对应的cpp文件中定义这三个变量。

直接在头文件定义(即去掉extern)是不好的做法,如果多个cpp一起编译,它们引用了不止一次这个头文件,会出现重复定义的错误。

最佳的做法是,一处定义,多处声明。追问

那么我的这个结构体是不是也要放在CPP文件中?
struct DirList {
char table[256];
DirList *pNext;
};

追答

类型定义,放在头文件

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-17
把extern去掉
相似回答