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也还是一样。 展开
 我来答
heptnaol
2016-11-17 · TA获得超过7261个赞
知道大有可为答主
回答量:7120
采纳率:78%
帮助的人:1806万
展开全部
这个extern是声明而非定义,它表示first在别的某处,肯定是你在别的地方没有定义。
你可以在和该头文件对应的cpp文件中定义这三个变量。

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

最佳的做法是,一处定义,多处声明。
追问
那么我的这个结构体是不是也要放在CPP文件中?
struct DirList {
char table[256];
DirList *pNext;
};
追答
类型定义,放在头文件
Sunny灬days
2016-11-17 · TA获得超过341个赞
知道答主
回答量:22
采纳率:0%
帮助的人:10.5万
展开全部
把extern去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式