是否有办法确定我可以传递给编译器选项的最小值和最大值。例如:
-fconstexpr-depth = n
或
-falign-jumps [= n]
n的最小值和最大值是多少?或者更好的方法是知道所有中间值的整个取值范围。
我知道这可以并且将取决于我想要编译的代码。但是我猜对于一些编译器选项,最大和最小的输入值可以独立于要编译的代码确定。
假设您正在询问有关GCC的问题(它来自标记)。
在gcc/c-family/c中定义的fconstexr -depth选项。以这种方式选择:
fconstexpr-depth=
C++ ObjC++ Joined RejectNegative UInteger Var(max_constexpr_depth) Init(512)
-fconstexpr-depth=<number> Specify maximum constexpr recursion depth.
立即看到的内容:GCC选项描述没有明确的值限制。只有默认值(512)和此选项值绑定的max_constexpr_depth
变量。让我们在源代码中查找它…
static bool
push_cx_call_context (tree call)
{
..... some code .....
if (call_stack.length () > (unsigned) max_constexpr_depth)
return false;
return true;
}
如您所见,这个变量没有进行任何限制检查。正确答案是:没有任何限制。你可能超过5000或500万没有人在乎,每个人都认为你知道你在做什么。
当然,没有限制,编译器没有办法向你报告它们