#pragma STDC CX_LIMITED_RANGE
适用的调用
| 编译指示 (pragma) | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
#pragma STDC CX_LIMITED_RANGE |
✓ | ✓ | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
用途
通知编译器,仅限通过中间计算不会溢出或丢失基数的值来调用复杂除法和绝对值。
语法
使用量
在限定范围之外使用值可能会产生错误的结果,其中限定范围的定义使得 "明显的符号定义" 不会溢出或耗尽精度。
编译指示从第一次出现开始生效,直到迂到另一个 cx_limited_range 编译指示为止,或者直到转换单元结束为止。 当编译指示出现在复合语句 (包括嵌套复合语句) 中时,它从第一次出现开始生效,直到迂到另一个 cx_limited_range 编译指示,或者直到复合语句结束为止。
示例
以下示例显示了如何使用 pragma for complex division:
#include <complex.h>
_Complex double a, b, c, d;
void p() {
d = b/c;
{
#pragma STDC CX_LIMITED_RANGE ON
a = b / c;
}
}
以下示例显示了如何将 pragma 用于复杂绝对值:
#include <complex.h>
_Complex double cd = 10.10 + 10.10*I;
int p() {
#pragma STDC CX_LIMITED_RANGE ON
double d = cabs(cd);
}
