include and using declaration
include and using declaration
using ::bb::cascades::Application;
#include <bb/cascades/Application>
这两个声明是什么意思?
有什么好的教程可以深入地说明使用指令/声明吗?谢谢
#include
是前置处理器指令。它基本上告诉前置器取给定的文件,并将#include
行替换为文件内容。
另一方面,using
使得使用namespace
(结构、枚举、函数)内部的名称而不使用namespace
前缀成为可能。在这种情况下,::bb::cascades::Application
将使您能够使用写
Application app;
而不是
::bb::cascades::Application app;
如果CCD_ 7是默认的可构造类。
"为什么我需要使用#include
?">
为了使用函数或创建对象,编译器必须知道这些东西的结构,例如函数签名或类的成员和方法。这些东西都写在头文件中。让我们来看一个非常简单的例子,其中我们提供了一些模块(称为module
):
模块module
// MODULE_HPP
// only declarations, no code
namespace module{
struct dummyStruct{
void dummyMethod(char);
char dummyMember;
};
double dummyFunc(double);
};
// MODULE_CPP
// actual implementation
namespace module{
void dummyStruct::dummyMethod(char c){
dummyMember = c;
};
void dummyFunc(double a){
return a + 1;
}
};
正如您所看到的,我们的module
由一个结构、一个成员和一个方法以及一个简单的函数组成。请注意,我们将所有内容都封装在名称空间module
中。现在我们有了另一个想要使用module
的程序:
#include <iostream>
using module::dummyFunc;
int main(){
std::cout << dummyFunc(1) << std::endl;
}
这是行不通的,因为编译器不知道这两个名称空间module
。您需要添加声明,这可以通过使用#include
来完成(请参阅本答案的第一段):
#include <iostream>
#include "module.hpp"
using module::dummyFunc;
int main(){
std::cout << dummyFunc(1) << std::endl;
}
请注意,您需要同时编译module.cpp和main.cpp,否则会出现链接器错误
相关文章:
- "using namespace std;"在C++的作用是什么?
- vector<vector<double>> to mxArray using memcpy
- Using C++ CryptAPI:CNG Create CSR
- STLPort using C++11
- 函数中的 c++ using 语句,后跟函数名称(对于 ADL?
- Using getchar_unlocked()
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- 为什么"using System;"不被视为不良做法?
- Declaration of IntRect SFML
- 为什么我需要做'using namespace std'而不是"使用 std::cout"?
- 'using namespace'实现细节的便捷方法(仅标头库)?
- 如何区分C++中的"using declaration"和"using directive"?
- 使用 "using declaration" 扩展非类型模板参数包(模板可变参数编译时 SignalSlot 实现)
- "Using declaration" 在 RADStudio 2010 中不起作用
- include and using declaration
- 由using declaration指定的构造函数
- 试图通过using-declaration定义命名空间成员
- 使用嵌套命名空间声明"using namespace"时出错 ( "namespace xxx::yyy not allowed in using-declaration" )