我最近遇到了一个问题。
我有三个文件,Ah,B.cpp和C.cpp:
啊
#ifndef __A_H__
#define __A_H__
int M()
{
return 1;
}
#endif // __A_H__
Run Code Online (Sandbox Code Playgroud)
丙型肝炎
#include "A.h"
Run Code Online (Sandbox Code Playgroud)
丙型肝炎
#include "A.h"
Run Code Online (Sandbox Code Playgroud)
当我通过MSVC编译这三个文件时,出现一个错误:
C.obj : error LNK2005: "int __cdecl M(void)" (?M@@YAHXZ) already defined in B.obj
Run Code Online (Sandbox Code Playgroud)
众所周知,B.obj有一个名为“ M”的符号,C.obj也有一个“ M”。错误来了。
但是,如果我将M方法更改为包含如下所示的方法M的类:
啊
#ifndef __A_H__
#define __A_H__
class CA
{
public:
int M()
{
return 1;
}
};
#endif // __A_H__
Run Code Online (Sandbox Code Playgroud)
没有更多的错误!有人可以告诉我发生了什么吗?
visual-c++ ×1