-qalloca 和 -ma(仅限 C)
适用的调用
| 选项 | xlc | xlC | xlclang | xlclang++ |
|---|---|---|---|---|
| -qalloca | ✓ | |||
| -ma | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
等效编译指示
| xlc 和其他旧调用命令 | xlclang 调用命令 |
|---|---|
| #pragma alloca | 无 |
用途
当从不包含 alloca.h 头的源代码调用系统函数 alloca 时,请提供该函数的内联定义。
函数
#pragma alloca 指令
如果未使用上述任何方法 ,则仅在 C 中提供相同的功能。
void* alloca(size_t size) 动态分配内存,类似于标准库函数 malloc。 在下列任何情况下,编译器会自动将对系统 alloca 函数的调用替换为内联内置函数 __alloca :- 包含头文件 alloca.h
- 使用 -Dalloca=__alloca 进行编译
- 使用表单
__alloca直接调用内置函数
#pragma alloca 指令
如果未使用上述任何方法 ,则仅在 C 中提供相同的功能。语法
缺省值
不适用。
使用量
如果不使用上述任何方法来确保将对 alloca 的调用替换为 __alloca,那么 alloca 将被视为用户定义的标识而不是内置函数。
一旦指定 ,#pragma alloca 将应用于文件的其余部分,且无法禁用。 如果源文件包含任何您希望在不使用 #pragma alloca 的情况下编译的函数,请将这些函数放在不同的文件中。
您可能要考虑使用 C99 变长数组来代替 alloca。
预定义的宏
无。
示例
要编译 myprogram.c 以便将对函数 alloca 的调用视为内联,请输入:
xlc myprogram.c -qalloca 