C++ 标头声明和源定义周围的命名空间
C++ Namespace around header declaration and source definition
我正在制作一个静态库,其中定义的所有内容都在一个命名空间中。但是我不确定我是否应该像定义类一样定义这些方法,或者将它们包装在命名空间中。我要问的是:
这是否有效:
MyThings.h
namespace MyThings {
void DoStuff();
void DoOtherStuff();
}
我的东西.cpp
namespace MyThings {
void DoStuff() {
// Do this.
}
void DoOtherStuff() {
// Do that.
}
}
或者,我应该像类方法一样定义它吗?
我的东西.cpp
void MyThings::DoStuff() {
// Do this.
}
void MyThings::DoOtherStuff() {
// Do that.
}
我宁愿不使用using namespace MyThings;
,如果它有效,我宁愿使用我的第一个示例,我觉得它使代码更具可读性,而不必在每个方法标识符之前使用MyThings::
。
两者都有效,因此您可以根据口味选择风格。
使用以下命令定义函数有一个宣传的优势:
void MyThings::DoStuff() {
// Do this.
}
也就是说,为了做到这一点,函数必须已经声明。因此,像这样的错误:
void MyThings::DoStuf() {
// Do this.
}
或
void MyThings::DoStuff(int i) {
// Do this.
}
编译时被捕获 MyThings.cpp
.如果定义
namespace MyThings {
void DoStuff(int i) {
// Do this.
}
}
然后,在另一个源文件中的某人尝试调用该函数并且链接器抱怨之前,通常不会收到错误。显然,如果您的测试不是垃圾,您将以某种方式捕获错误,但通常越快越好,并且您可能会从编译器中获得比链接器更好的错误消息。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- #定义c-预处理器常量..我做错了什么
- 用C++中的一个变量定义一个常量
- 部分定义/别名模板模板参数
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- #为""定义宏;静态";针对不同的上下文
- 如何确保C++函数在定义之前声明(如override关键字)
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在命名空间中定义函数还是限定函数
- 此代码是否违反一个定义规则
- 编译C++时未定义的引用
- 不同翻译单元中不可重载的非内联函数定义
- 为什么在定义函数之前先声明它
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在类定义之后定义一个私有方法
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- C++ 标头声明和源定义周围的命名空间
- 视觉类型定义到C++中的周围类型