Míl*_*vík 2 c++ include header-files ld
ld:重复符号StringFunctions :: intToString(int)in
/Build/Intermediates/Y36PJC-mrvikmil.build/Debug/Y36PJC-mrvikmil.build/Objects-normal/x86_64/ServerSocket.o and
/Build/Intermediates/Y36PJC-mrvikmil.build/Debug/Y36PJC-mrvikmil.build/Objects-normal/x86_64/main.o
Run Code Online (Sandbox Code Playgroud)
对于架构x86_64
function StringFunctions :: intToString(int)在StringFunctions.h中
包括来自main.cpp:
#include <iostream>
#include <string>
#include "Exception.h" //does not include anything more
#include "ServerConsole.h"
/*
which includes ServerSocket.h which includes ClientSocket.h which includes StringFunctions.h
AND
ServerSocket.h includes SocketException.h which includes StringFunctions.h
*/
Run Code Online (Sandbox Code Playgroud)
包括来自ServerSocket.cpp:
#include <iostream>
#include <string>
#include "InvalidPortException.h" //does not include anything more
#include "SocketException.h" //which includes StringFunctions.h
#include "ClientSocket.h" //which includes SocketException.h which includes StringFunctions.h
#include "StringFunctions.h" //StringFunctions.h
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <errno.h>
Run Code Online (Sandbox Code Playgroud)
我相信只要我有.h文件中的东西,我可以在任何地方包含任何东西......
我的所有文件都包括后卫(#ifndef ... #define ......)
请帮忙.
您必须将函数定义为inline或将其实现移动到cpp文件.否则它将存在于两个对象中,并且C++将不知道哪一个(尽管它们是相同的)链接.
包含防护将避免在同一代码文件/对象中多次使用相同的头.但是,它们不会避免在多个目标文件中使用相同的代码段,因为每个目标文件都是自己创建的,并且所有定义都已重置.
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |