strchr函数用法_c++ strchr函数_strchr函数原型(3)

电脑杂谈  发布时间:2017-02-28 18:06:59  来源:网络整理

(1)、避免多重包含是学编程时最基本的要求;

(2)、前置声明是为了降低编译依赖,防止修改一个头文件引发多米诺效应;

(3)、内联函数的合理使用可提高代码执行效率;

(4)、-inl.h可提高代码可读性(一般用不到吧:D);

(5)、标准化函数参数顺序可以提高可读性和易维护性(对函数参数的堆栈空间有轻微影响,我以前大多是相同类型放在一起);

(6)、包含文件的名称使用.和..虽然方便却易混乱,使用比较完整的项目路径看上去很清晰,很条理,包含文件的次序除了美观之外,最重要的是可以减少隐藏依赖, 使每个头文件在“最需要编译”(对应源文件处 :D)的地方编译,有人提出库文件放在最后,这样出错先是项目内的文件,头文件都放在对应源文件的最前面,这一点足以保证内部错误的及时发现了。

2.作用域:

名字空间:鼓励在.cc文件内使用匿名名字空间.使用具名的名字空间时,其名称可基于项目名或相对路径.不要使用using 关键字.

定义:名字空间将全局作用域细分为独立的,具名的作用域,可有效防止全局作用域的命名冲突.

优点:(1)、虽然类已经提供了(可嵌套的)命名轴线(YuleFox注:将命名分割在不同类的作用域内),名字空间在这基础上又封装了一层.(2)、举例来说,两个不同项目的全局作用域都有一个类Foo,这样在编译或运行时造成冲突.如果每个项目将代码置于不同名字空间中,project1::Foo和project2::Foo作为不同符号自然不会冲突.

缺点:(1)、名字空间具有迷惑性,因为它们和类一样提供了额外的(可嵌套的)命名轴线.(2)、在头文件中使用匿名空间导致违背C++的唯一定义原则(One Definition Rule (ODR)).

结论:根据下文将要提到的策略合理使用命名空间.

在.cc文件中,允许甚至鼓励使用匿名名字空间,以避免运行时的命名冲突:

namespace {                             // .cc 文件中

// 名字空间的内容无需缩进
enum { kUNUSED, kEOF, kERROR };         // 经常使用的符号
bool AtEof() { return pos_ == kEOF; }   // 使用本名字空间内的符号 EOF

} // namespace
然而,与特定类关联的文件作用域声明在该类中被声明为类型,静态数据成员或静态成员函数,而不是匿名名字空间的成员.如上例所示,匿名空间结束时用注释 // namespace 标识.

不要在.h文件中使用匿名名字空间.

具名的名字空间使用方式如下:

(1)、用名字空间把文件包含,gflags的声明/定义,以及类的前置声明以外的整个源文件封装起来,以区别于其它名字空间:

// .h 文件
namespace mynamespace {

// 所有声明都置于命名空间中
// 注意不要使用缩进
class MyClass {
    public:
    …
    void Foo();
};

} // namespace mynamespace
// .cc 文件
namespace mynamespace {

// 函数定义都置于命名空间中
void MyClass::Foo() {
    …
}

} // namespace mynamespace
通常的.cc文件包含更多,更复杂的细节,比如引用其他名字空间的类等.

#include “a.h”

DEFINE_bool(someflag, false, “dummy flag”);

class C;                    // 全局名字空间中类 C 的前置声明
namespace a { class A; }    // a::A 的前置声明

namespace b {

…code for b…                // b 中的代码

} // namespace b
(2)、不要在名字空间std内声明任何东西,包括标准库的类前置声明.在std名字空间声明实体会导致不确定的问题, 比如不可移植.声明标准库下的实体,需要包含对应的头文件.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35033-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 伍冲虚
      伍冲虚

      现在的台湾媒体还在不停的抹黑大陆好吧

    • 罗冲
      罗冲

      小王子

    热点图片
    拼命载入中...