Ale*_*anu 1 c++ compiler-errors header
我想使用 Wireshark 开源项目中“func.h”文件中的函数。我需要在多个 .cpp 文件中使用 funct() 函数,但出现多重定义错误。
函数.h:
#ifndef func_h
#define func_h
#include<string>
void *funct(char *cName)
{
std::string name = cName;
cName+= ".extension";
}
Run Code Online (Sandbox Code Playgroud)
在 .cpp 文件中,我包含 func.h:
#include "func.h"
Run Code Online (Sandbox Code Playgroud)
并从 2 个 .cpp 文件调用 funct() 函数:
funct("program");
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能避免出现多重定义错误?解决方法是将函数定义复制并粘贴到每个 .cpp 文件中并更改函数名称,但这很丑陋。
非常感谢。
您有两个选择:
函数.h
#ifndef func_h
#define func_h
#include<string>
void *funct(char *cName);
#endif
Run Code Online (Sandbox Code Playgroud)
函数.cpp
#include "func.h"
void *funct(char *cName)
{
std::string name = cName;
cName+= ".extension";
}
Run Code Online (Sandbox Code Playgroud)
您照常编译和链接,例如
g++ -c -o func.o func.cpp
g++ -c -o main.o main.cpp
g++ -o prog main.o func.o
Run Code Online (Sandbox Code Playgroud)
inline您在函数的定义中指定关键字。这允许函数出现在多个编译单元中。看到这个问题。| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |