有没有办法确定我可以传递给编译器选项的最小值和最大值。 E.g:
-fconstexpr深入= N
或
-falign-跳跃[= N]
n的最小值和最大值是多少?或者更好的是知道所有中间值的整个值范围。
我知道这可以并且将取决于我想编译的代码。但我想对于一些编译器选项,可以独立于要编译的代码来确定最大和最小输入值。
答案 0 :(得分:1)
让我们假设您正在询问GCC(它来自标签)。
以gcc / c-family / c.opt中定义的fconstexpr-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或5000000无人问津,每个人都认为你知道自己在做什么。
当然,没有限制,编译器无法向您报告。