我有做一些工作的功能。
啊
void doSomething(int n);
A.cpp
#include "A.h"
void doSomething(int n) {
/* something */
}
如果我想在另一个源文件中使用这个函数,最好的选择是什么:
1) 包括啊
B.cpp
#include "A.h"
void anotherTask() {
// ...
doSomething(5);
// ...
}
2)或使用前向声明(函数原型):
B.cpp
void doSomething(int);
void anotherTask() {
// ...
doSomething(5);
// ...
}
有很多关于尽可能多地为类使用前向声明的技巧。那么,函数前向声明的最佳实践是什么?
UPD
好的,这个例子太简单了。
如果标题 Ah 有一些垃圾(相对于对驱动程序级别一无所知的 B.cpp)怎么办:
啊
#include "specific_driver_header.h" /* some lowlevel stuff that B.cpp couldn't know */
#define SPECIFIC_DRIVER_DEFINES 0xF0 /* useless define for B.cpp that uses global namespace */
void doSomething(int n); /* only significant function for B.cpp */
如果我在 B.cpp 中包含 Ah,那么 B.cpp 将不会独立于驱动程序或类似的东西。在这种情况下我应该使用变体(2)吗?