Attributes
C++11 引入了 Attributes(属性)机制,为开发者提供了一种标准化的方式来为代码添加额外的元信息。这种机制统一了不同编译器特定的扩展(如 GCC 的 __attribute__
和 MSVC 的 __declspec
),使代码更具可移植性。
背景:C++11 之前的编译器扩展
在 C++11 之前,不同的编译器引入了自己的扩展机制,用于为代码添加特殊的属性,但它们的语法和支持存在很大差异。
GCC 的 __attribute__
- 语法:
__attribute__((...))
- 用途:用于指定函数、变量、类型等的特殊属性,例如优化提示或内存对齐。
- 常见示例:
void myFunction() __attribute__((noreturn)); // 表示该函数不会返回 int myArray[10] __attribute__((aligned(16))); // 强制对齐到 16 字节
MSVC 的 __declspec
- 语法:
__declspec(...)
- 用途:主要用于声明特定的存储类、导出/