Visual Studio可以通过“转到定义”找到标识符的定义,但是编译器会抛出“找不到标识符”(CS3861)

时间:2018-09-04 06:18:54

标签: c++ visual-studio-2017

右键单击

int retVal = pn_Plaus_SDB1xxx_V820(sdbBuffer);

在PNIO_SDB_Plausib_Console.vcxproj的cpp文件中并选择转到定义,Visual Studio 2017可以在 PN_CPP_SDB1xxx_Plausib_V820.vcxproj 的.cpp文件中找到以下定义。相同的解决方案:

UINT32 EXPORT pn_Plaus_SDB1xxx_V820(BYTE* in_sdb_Data)
{
    return pn_SDB_Plausib_Controller(in_sdb_Data, 0, 0);
}

构建完整的解决方案会引发

Error   C3861   'pn_Plaus_SDB1xxx_V820': identifier not found   

表示完全相同的语句。

VS2017为什么找不到定义,为什么编译器找不到?缺少什么?

1 个答案:

答案 0 :(得分:2)

编译器仅知道其正在编译的特定文件,包括其标头。
IDE正在整个解决方案中搜索定义。

您需要#include包含函数声明的标头。
(通常,您可以使用“转到声明”来找出哪一个。)