包含文件中的 CPP 调用函数
Cpp calling function from including file
因此,就我的 cpp 知识而言,我可以调用在我 #include 的头文件中声明/定义的函数。
是否可以从包含的文件调用函数?
例如: "main.cpp"包括"test.h", 因此,来自"main.cpp"的任何函数都可以调用来自"test.h"的函数。
但是,在这种情况下,来自"test.cpp"的代码是否可以调用来自"main.cpp"的函数而不包含它?
No.不能从另一个源文件调用在另一个源文件中声明的函数。还有这是什么?并且是一个很好的用法,将源与标头分开;头文件包括原型和声明,而源文件包括定义。
例如:
// Shape.h
#ifndef SHAPE_H
#define SHAPE_H
class Shape{
//...
};
#endif
// Shape2D.h
#ifndef Shape2D.h
#define Shape2D.h
class Shape2D{
//...
};
#endif
现在源文件:
// Shape.cpp
#include "Shape.h"
// Definitions here:
Shape::Shape(){}
// Shape2D.cpp
#include "Shape2D.h"
// Some definitions here:
Shape2D::Shape2D(){}
现在主要.cpp:
#include "Shape2D.h"
// #include "Shape.h"
int DoSomeStuff();
int main(){
Shape2D a;
Shape b;
return 0;
}
int DoSomeStuff(){
// ....
}
正如您在上面看到的,我只是包含了Shape2D.h
并且可以使用类Shape
而不包含其头文件Shape.h
那是因为Shape2D.h
包含它,因此它的内容被添加到其中,然后两个文件的所有内容都存在于我的主源文件中。
Main.cpp
包括间接Shape.h
。
- 还要记住,源文件中声明的内容的作用域为它,这意味着无法从外部看到。
尝试这样的事情:
在Shape.cpp
呼叫DoSomeThing
:
#include "main.cpp"
int x = DoSomeThing();
上面至少有一个编译时错误:至少已经定义了类
Shape
和Shape2D
。我的建议:不要包含源文件,使用
Inclusions guards
或pragma once
以避免包含多个文件。
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 当使用通配符和null指针调用函数时,对输出的说明
- 从R调用C++函数并对其进行集成时出错
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在qt中从另一个类调用函数
- 在 COUT 语句中使用 COUT 调用函数
- 如何从线程中的不同模块调用函数?
- C++从函数指针数组调用函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在 C/C++ 中从外部库调用函数
- 如何使用运算符在同一行中多次调用函数
- 是否可以创建一个从不同类调用函数的线程?
- 无法为类成员调用函数
- 如何从另一个标头 c++ 调用函数
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何只允许在调用函数 B 后调用函数 A?
- 我可以这样调用函数吗?
- 如何在 c++ 的类中递归调用函数方法?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?