ZHCU876Z July 2001 – October 2023 SM320F28335-EP
在宽松 ANSI 模式 (--relaxed_ansi) 下进行编译时,大多数 GCC 语言扩展都可在 TI 编译器中使用。
表 6-3 中列出了 TI 编译器支持的扩展,其基于 GNU 网站上的扩展列表。阴影行描述了不受支持的扩展。
扩展 | 说明 |
---|---|
语句表达式 | 将语句和声明放在表达式中(用于创建智能的“安全”宏命令) |
局部标签 | 语句表达式的局部标签 |
标签作为值 | 指向标签和计算得到的 goto 的指针 |
嵌套函数 | 就像在 Algol 和 Pascal 中一样,函数的词法范围 |
构造调用 | 分派对另一个函数的调用 |
命名类型(1) | 为表达式类型指定名称 |
typeof 运算符 | typeof 指的是表达式类型 |
广义左值 | 在左值中使用问号 (?)、逗号 (,) 和 cast |
条件语句 | 省略 ?: 表达式的中间操作数 |
long long | Double long 字整数和 long long int 类型 |
十六进制浮点值 | 十六进制浮点常量 |
复数 | 复数的数据类型 |
零长度 | 零长度数组 |
可变参数宏命令 | 具有可变数量参数的宏命令 |
可变长度 | 在运行时计算长度的数组 |
空结构 | 无成员的结构 |
加下标 | 任何数组都可以加下标,即使它不是左值。 |
转义换行符 | 转义换行符的规则稍微宽松一些 |
多行字符串(1) | 带有嵌入换行符的字符串文字 |
指针算术 | 空指针和函数指针的算术 |
初始化程序 | 非常量初始化程序 |
复合字面量 | 复合字面量将结构体、联合体或数组作为值 |
指定的初始化程序 | 初始化程序的标签元素 |
强制转换为 union | 从 union 的任何成员强制转换为 union 类型 |
Case(强制转换)范围 | “Case 1 ...9”等 |
混合声明 | 混合声明和代码 |
函数属性 | 声明函数没有任何副作用,或者其永远不会返回 |
属性语法 | 属性的正式语法 |
函数原型 | 原型声明和旧式定义 |
C++ 注释 | 系统会识别 C++ 注释。 |
美元符号 | 标识符中允许使用美元符号。 |
字符转义 | 字符 ESC 表示为 \e |
变量属性 | 指定变量的属性 |
类型属性 | 指定类型的属性 |
对齐 | 查询类型或变量的对齐情况 |
内联 | 定义内联函数(和宏命令一样快) |
汇编标签 | 指定要用于 C 符号的汇编器名称 |
扩展的 asm | 带有 C 操作数的汇编器指令 |
约束条件 | asm 操作数的约束条件 |
包装器头文件 | 包装器头文件可以使用 #include_next 包含另一个版本的头文件 |
替代关键字 | 头文件可以使用 __const__、__asm__ 等 |
显式寄存器变量 | 定义驻留在指定寄存器中的变量 |
不完整的枚举类型 | 定义枚举标签而不指定其可能的值 |
函数名称 | 作为当前函数名称的可打印字符串 |
返回地址 | 获取函数的返回地址或帧地址(有限支持) |
其他内置 | 其他内置函数(请参见节 6.15.6) |
矢量扩展 | 通过内置函数使用矢量指令 |
目标内置 | 专用于特定目标的内置函数 |
Pragma | GCC 接受的 pragma |
未命名字段 | 结构体/联合体中的未命名结构体/联合体字段 |
线程本地 | 每线程变量 |
二进制常量 | 使用“0b”前缀的二进制常量。 |