首页 > 编程知识 正文

java报错需要标识符,一个无法解析的外部命令

时间:2023-05-06 04:54:37 阅读:175800 作者:2229

在VisualStudio中开发c程序时经常出现的链接问题是LNK2019无法分析外部符号。 此问题通常可能是因为没有将引用的代码链接到当前项目。 也有例外。 这是因为以下预声明类。

为了加快编译速度,经常选择在头文件中使用预声明的类名作为指针,并在代码定义文件中包含完整的类声明。

foo.h:

类福

{

公共:

void call ();

}

bar.h:

类福;

foo* f=0;

bar.cpp:

#include 'bar.h '

#include 'foo.h '

int main () {f-call ); 返回0; }

如果出现了与编译单元(一般指cpp文件)相关的) A用B、B用C ),则在两次引用不包含C )的声明时,“无法解析外部符号.”

例如:

foo.h:

类福

{

公共:

void call ();

}

bar.h:

类福;

voidBarcall(foo*f=0);

bar.cpp:

#include 'bar.h '

foo* store;

voidBarcall(foo*arg ) )。

{

store=arg;

}

main.cpp:

#include 'foo.h '

#include 'bar.h '

int main () )

{

Barcall(0;

返回0;

}

因为编译时main.cpp的foo类是完整声明,而bar.cpp的foo类只是空结构(预定义的),所以编译器会认为他们是不同的结构,找不到要找的符号。

在此示例中,由于bar.cpp不包含foo.h,因此foo结构只是空结构,与main.cpp中对barcall引用的foo结构不同,这会导致找不到符号的链接错误。

解决方案是在bar.cpp中包含foo.h以获得foo的完整声明。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。