重复定义问题
在一个文件中(.cpp)定义了几个函数(模版函数),在令外几个文件中包含该文件,出现重复定义问题
于是我将他们的声明放在一个头文件中,然后改为包含该头文件,但是因为他们是模版, 所以又出现了问题
请给一个可行的解决方案
[解决办法]
用宏定义,
#ifndefine _FILENAME_H
#define _FILENAME
//your header file
#endif
[解决办法]
或者 头文件中加上
#pragma once
[解决办法]
用预编译器常量:
#ifndefine _XXXXXXXXXX_H
#define _XXXXXXXXX_H
......
#endif
[解决办法]
#pragma once
Specifies that the file will be included (opened) only once by the compiler in a build. This can reduce build times as the compiler will not open and read the file after the first #include of the module.
指定当前文件在构建时只被包含(或打开)一次,这样就可以减少构建的时间,因为加入#pragma once后,编译器在打开或读取第一个#include 模块后,就不会再打开或读取随后出现的相同#include 模块.
[解决办法]
它们的区别:
#pragma once
这个是编译相关,就是说在这个编译系统上能用,但是在其他编译系统
不一定行,也就是说移植型差。不过现在基本上已经是每个编译器都有这个定义了.
#ifndef #define ...#endif
这个是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件
多次编译。所以在所有支持C++语言的编译器上都是有效的。如果写的程序要跨平台,最好使用这种方式。
[解决办法]
由于是模板函数,模版的声明与定义一般都放在一起,你把定义也放到.h里面吧