-qalloca 和 -ma(仅限 C)

适用的调用

表 1. 接受给定选项的调用
选项 xlc xlC xlclang xlclang++
-qalloca      
-ma      
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

对象代码控制

等效编译指示

表 2。 两个类别的调用的编译指示等效项
xlc 和其他旧调用命令 xlclang 调用命令
#pragma alloca

用途

当从不包含 alloca.h 头的源代码调用系统函数 alloca 时,请提供该函数的内联定义。

函数 void* alloca(size_t size) 动态分配内存,类似于标准库函数 malloc。 在下列任何情况下,编译器会自动将对系统 alloca 函数的调用替换为内联内置函数 __alloca :
  • 包含头文件 alloca.h
  • 使用 -Dalloca=__alloca 进行编译
  • 使用表单 __alloca 直接调用内置函数
-qalloca-ma 选项和 基于 XL 的前端开始#pragma alloca 指令基于 XL 的前端端 如果未使用上述任何方法 ,则仅在 C 中提供相同的功能。

语法

操作语法

读取语法图跳过可视语法图 -qalloca -ma

编译指示语法

读取语法图跳过可视语法图#pragmaalloca

缺省值

不适用。

使用量

如果不使用上述任何方法来确保将对 alloca 的调用替换为 __alloca,那么 alloca 将被视为用户定义的标识而不是内置函数。

基于 XL 的前端开始一旦指定 ,#pragma alloca 将应用于文件的其余部分,且无法禁用。 如果源文件包含任何您希望在不使用 #pragma alloca 的情况下编译的函数,请将这些函数放在不同的文件中。基于 XL 的前端端

您可能要考虑使用 C99 变长数组来代替 alloca

预定义的宏

无。

示例

要编译 myprogram.c 以便将对函数 alloca 的调用视为内联,请输入:

xlc myprogram.c -qalloca

相关信息