在其他源文件中没有通用的头文件访问功能
Without common header file access function in other source file
是否可以调用在.cpp中定义的函数以在b.cpp中使用,而无需在任何头文件中声明.cpp中的函数。
是的,但不推荐使用。
头的包含实际上是将头的内容有效地放入源代码中,位于预处理器找到#include
指令的确切位置。因此,不使用include指令,代码可以手动写入该位置,程序将是相同的:
带标题:
//a.h
void foo();
//a.cpp
#include "a.h"
void foo() {
//do something
}
//b.cpp
#include "a.h"
void bar() {
foo();
}
预处理后与相同
//a.cpp
void foo();
void foo() {
//do something
}
//b.cpp
void foo();
void bar() {
foo();
}
因此,您可以省略头,并在需要调用它的任何地方手动声明函数。但是,头可以确保整个项目的声明都是相同的。例如,如果您更改foo
以获取参数:
//a.h
void foo(int);
现在在b.cpp
中,编译器将告诉您调用foo()
与声明不匹配。如果你去掉了头,而是手动声明它,如果你忘记在b.cpp
中更改声明,编译器会假设foo
有两个版本,因为你告诉过他:
//a.cpp
void foo(int); //version 1
void foo(int i) {
//do something
}
//b.cpp
void foo(); //oops. forgot to change that. compiler assumes a second version
void bar() {
foo(); //ok, try to call version 2...
}
这将进行编译,但是链接器将告诉您一些关于void foo()
的未定义引用的信息,该引用在b.obj
中调用。
相关文章:
- 防止临时对象文件访问 MSVC 中的磁盘
- 内存映射文件访问非常慢
- 从多个文件访问静态全局 WinForm UI 对象
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 如何在Android中从本机编译的c ++二进制文件访问相机
- 如何:监视Windows中另一个进程的文件访问?
- 如何从NTFS中的$ MFT文件访问文件的每个块的文件指针
- 执行C 代码时快速频繁的文件访问
- 使用TDD时隐藏文件访问实现详细信息
- 从C文件访问C 类成员功能
- 从另一个CPP文件访问Form1的文本框,Visual C 2010
- 在所有CPP文件中使用一个Globe变量.如果CPP文件的一个类更改该值,我想从另一个类CPP文件访问它
- 如何从C 文件访问$(target_arch)
- 系统访问出界异常,尝试从flatbuffer的二进制文件访问"LengthofTable"
- 如何声明可通过多个头文件访问的对象
- 使用二进制文件访问违规读取位置
- 哪种类型的文件访问使用
- 在其他源文件中没有通用的头文件访问功能
- 文件访问不起作用
- Windows 8 应用商店应用程序C++文件访问