【发布时间】:2014-10-06 02:43:19
【问题描述】:
我想知道将 C++ 常规函数而不是方法(类中的方法)存储在头文件中是否是一种好习惯。
例子:
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int add(int a, int b)
{
return a + b;
}
#endif
并像这样使用它:
#include <iostream>
#include "Functions.h"
int main(int argc, char* args[])
{
std::cout << add(5, 8) << std::endl;
return 1;
}
这是一个好习惯吗? 提前致谢!
【问题讨论】:
-
不,您将不可避免地违反单一定义规则。
-
想想如果头文件包含在两个或多个源文件中会发生什么。
-
@chris 为什么?包含警卫不正是为了防止这种情况吗?
-
@DanielDaranas 不,包含防护可防止将同一个头文件多次包含在同一个源文件中。它不能防止包含多个源文件(如果将源文件单独编译到目标文件中,这将如何工作?)另请阅读translation units(以及 OP:您也应该阅读链接)
-
您必须标记函数
inline以避免违反单一定义规则。
标签: c++ function header-files