如何确定可以传递给编译器选项的最小值和最大值?

时间:2016-08-11 13:17:04

标签: c++ gcc compilation compiler-options

有没有办法确定我可以传递给编译器选项的最小值和最大值。 E.g:

  

-fconstexpr深入= N

  

-falign-跳跃[= N]

n的最小值和最大值是多少?或者更好的是知道所有中间值的整个值范围。

我知道这可以并且将取决于我想编译的代码。但我想对于一些编译器选项,可以独立于要编译的代码来确定最大和最小输入值。

1 个答案:

答案 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无人问津,每个人都认为你知道自己在做什么。

当然,没有限制,编译器无法向您报告。

相关问题