如何在三个不同的.cpp文件中使用函数

How to use a function in three different .cpp files

本文关键字:文件 cpp 函数 三个      更新时间:2023-10-16

我有三个.cpp文件,它们分别命名为MeshLoader.cppDynamicXMesh.cpp和StaticXMesh.cpp

我在MeshLoader.cpp文件中有一个名为FindTexturePath的函数,我想在DynamicXMesh.cppStaticXMesh.cpp文件中调用并使用它。

我在启动XMesh文件中包含了MeshLoader.cpp(#include"MeshLoader.cpp")文件,当然会收到一个错误,说函数已经定义。。。

此外,我还尝试使用pragma一次ifndef…:

//This is "MeshLoader.cpp"
pragma once
#ifndef MLOAD
#define MLOAD
  char* FindTexturePath( char* TexturePath ,LPSTR FileNameToCombine){
      ...
      ...
      ...
  }
#endif

/////

//This is StaticXMesh.cpp
#include "MeshLoader.cpp"
...
...
...
this->StatXMeshTexturePath = FindTexturePath(StatXMeshTexturePath,d3dxMaterials[i].pTextureFilename);
...
...

/////对DynamicXMesh.cpp 的调用相同

我希望我解释得足够清楚。。。谢谢你抽出时间。。。

您需要创建MeshLoader.h,并在中放入类似的内容

#ifndef INCLUDED_MESH_LOADER_H
#define INCLUDED_MESH_LOADER_H
char* FindTexturePath( char* TexturePath ,LPSTR FileNameToCombine);
#endif

并将其包含在其他cpp文件中。每个cpp文件只需要FindTexturePath的声明即可进行编译。因此,每当您需要将cpp中的函数公开给其他cpp文件时,请创建一个在.

中具有函数声明的.h文件

首选方法是将函数声明放在.h文件中,并让链接器将所有.cpp文件合并为一个可执行文件。

如果您坚持以非标准的方式执行,则可以通过使函数inlinestatic发挥作用。

将函数原型放在一个头文件(MeshLoader.h)中,并在需要使用该函数的任何地方包含该文件。

正如其他用户所说,您希望将声明放入标头(.h.hpp)文件中。

有时,您可能希望在头文件中也有定义。此时,您将进行一个静态函数定义:static char* FindTexturePath(...) { .. }