File tree Expand file tree Collapse file tree 1 file changed +16
-1
lines changed
Expand file tree Collapse file tree 1 file changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -46,6 +46,7 @@ date: 2024-10-01
4646- [ 字面量优化(C++11~C++17)] ( #字面量优化c11c17 )
4747- [ alignas和alignof(C++11 C++17)] ( #alignas和alignofc11-c17 )
4848- [ 属性说明符和标准属性(C++11~C++20)] ( #属性说明符和标准属性c11c20 )
49+ - [ 新增预处理器和宏(C++17 C++20)] ( #新增预处理器和宏c17-c20 )
4950
5051## 新基础类型(C++11~C++20)
5152
@@ -556,4 +557,18 @@ C++11引入了标准的属性说明符:`[[attr]]`。普遍的规则是,属
556557
557558` [[likely]] ` 和` [[unlikely]] ` C++20引入用于说明该属性的执行路径是否需要进行优化。
558559
559- ` [[no_unique]] ` 用于说明数据成员不需要与其他非静态成员使用不同的地址。可以节省无状态的类的内存空间。
560+ ` [[no_unique]] ` 用于说明数据成员不需要与其他非静态成员使用不同的地址。可以节省无状态的类的内存空间。
561+
562+ ## 新增预处理器和宏(C++17 C++20)
563+
564+ C++17引入` __has_include ` 来判断某个头文件是否能够被包含进来。
565+
566+ C++20添加测试功能特性的宏,用于测试当前编译环境对各种功能特性的支持程度。
567+
568+ 属性测试宏` __has_cpp_attribute ` 可以只是编译环境是否支持某种属性。标准属性将被展开为改属性添加到标准的年份和月份,而厂商特有的属性将被展开为一个非零的值。
569+
570+ 语言功能特性测试宏会展开为该特性添加到标准时的年份和月份。
571+
572+ 标准库功能特性测试宏。
573+
574+ C++11引入可变参数宏` __VA_ARGS__ ` 。C++20引入` __VA_OPT__ ` 令可变参数宏更易于在参数为空的情况下使用。
You can’t perform that action at this time.
0 commit comments