C语言出现无法解析的外部命令情况是怎么回事,我把结构数据的声明和定义都放在头文件中:
#ifndef_FINDFILE_H#define_FINDFILE_H#include<stdio.h>#undefUNICODE#include<windows.h>...
#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也还是一样。
展开
2个回答
展开全部
这个extern是声明而非定义,它表示first在别的某处,肯定是你在别的地方没有定义。
你可以在和该头文件对应的cpp文件中定义这三个变量。
直接在头文件定义(即去掉extern)是不好的做法,如果多个cpp一起编译,它们引用了不止一次这个头文件,会出现重复定义的错误。
最佳的做法是,一处定义,多处声明。
你可以在和该头文件对应的cpp文件中定义这三个变量。
直接在头文件定义(即去掉extern)是不好的做法,如果多个cpp一起编译,它们引用了不止一次这个头文件,会出现重复定义的错误。
最佳的做法是,一处定义,多处声明。
追问
那么我的这个结构体是不是也要放在CPP文件中?
struct DirList {
char table[256];
DirList *pNext;
};
追答
类型定义,放在头文件
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询