小编luc*_*kdl的帖子

如何解决这个未声明的标识符

我的项目中出现了未声明的标识符错误(vs2013上的C2065),我设法在下面的示例代码中复制了该问题:

foo.h中:

#pragma once

#include "bar.h"

class Foo
{

public:
    inline void doStuff() { someFunction(); }

};
Run Code Online (Sandbox Code Playgroud)

bar.h:

#pragma once

#include <map>

#include "foo.h"

extern std::map<const char*, Foo> myMap;

void someFunction();
Run Code Online (Sandbox Code Playgroud)

bar.cpp:

#include "bar.h"

std::map<const char*, Foo> myMap;

void someFunction()
{

}
Run Code Online (Sandbox Code Playgroud)

main.cpp中:

#include "foo.h"

int main()
{
    Foo foo;
    foo.doStuff();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio Express 2013上构建时,它会出现以下错误:

错误C2065:'Foo':未声明的标识符

错误C2923:'std :: map':'Foo'不是参数'_Ty'的有效模板类型参数

错误C3861:'someFunction':找不到标识符

这里有什么问题,如何解决?

c++ linker extern

0
推荐指数
1
解决办法
2313
查看次数

标签 统计

c++ ×1

extern ×1

linker ×1