C++17新特性:只有头文件的库中启用内联变量

简介

这种库在声明函数时,始终是内联的,C++17中允许声明内联变量。C++17之前只能使用其他变通的方法实现内联变 量,新标准的支持让实现只有头文件的库更加的容易。
本节中,我们创建一个类,可以作为典型头文件库的成员。其目的就是给定一个静态成员,然后使用inline 关键字对其进行修饰,使得其实例在全局范围内都能访问到,在C++17之前这样做是不可能的。

  1. process_monitor 类必须包含一个静态成员,并且能全局访问。当该单元被重复包含时,会产生符号重定义的问题。
// foo_lib.hpp
class process_monitor { public:
static const std::string standard_string{ "some static globally available string"};
};

2.多个.cpp 文件中包含这个头文件时,链接阶段会出错。为了修复这个问题,添加了inline 关键字:

// foo_lib.hpp
class process_monitor { public:
static const inline std::string standard_string{ "some static globally available string"};
};
inline process_monitor global_process_monitor;

瞧,就是这样!

工作流

C++程序通常都有多个C++源文件组成(其以.cpp 或.cc 结尾)。这些文件会单独编译成模块/二进制文件(通常

你可能感兴趣的:(C++17新特性,c++,java,开发语言)