我想知道在头文件中存储 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;
}
这是一个很好的做法吗?
提前致谢!
如果你想在多个源文件中使用一个函数(或者更确切地说,translation units),那么你在头文件中放置一个函数声明(即函数原型(prototype)),并且 < em>定义在一个源文件中。
然后在构建时,首先将源文件编译为目标文件,然后将目标文件链接到最终的可执行文件中。
示例代码:
头文件
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int add(int a, int b); // Function prototype, its declaration
#endif
第一个源文件
#include "functions.h"
// Function definition
int add(int a, int b)
{
return a + b;
}
第二个源文件
#include <iostream>
#include "functions.h"
int main()
{
std::cout << "add(1, 2) = " << add(1, 2) << '\n';
}
如何构建它在很大程度上取决于您的环境。如果您使用的是 IDE(如 Visual Studio、Eclipse、Xcode 等),那么您可以将所有文件放入项目的正确位置。
如果您在 Linux 或 OSX 中从命令行构建,那么您可以:
$ g++ -c file1.cpp
$ g++ -c file2.cpp
$ g++ file1.o file2.o -o my_program
标志-c
告诉编译器生成一个目标文件,并将其命名为与源文件相同的名称,但带有.o
后缀。最后一个命令将两个目标文件链接在一起形成最终的可执行文件,并将其命名为my_program
(这就是-o
选项所做的,告诉输出文件的名称) .