为多个体系结构编译时的 C++ 多个函数定义

C++ mulitple definitions of function when compiling for multiple architectures

我有 4 个文件,linuxasm.h linuxasm.cpp windowsasm.h and windowsasm.cpp

在 main.cpp 我有

#ifdef __linux
  #include "linuxasm.h"
#elif _WIN64
  #include "winasm.h"
#endif

.cpps 中的函数名称相同 有没有办法防止 GCC 抱怨函数的多个定义? 还是我应该换一种方式?

你应该换一种方式。我会使用您的构建系统从基于体系结构的构建中省略适当的 .cpp 文件(如果我正确理解您的情况)。

基本上,对于一个目标,比如 Win64,windowsasm.cpp 是一个依赖项并且被编译; Linux 也类似。查看您的系统如何管理构建的依赖项并试一试。