Skip to content

Commit c20d842

Browse files
committed
add note of chapter 32
1 parent 97ea8a5 commit c20d842

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

_posts/2024-10-01-现代C++语言核心特性解析.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff 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__`令可变参数宏更易于在参数为空的情况下使用。

0 commit comments

Comments
 (0)