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



是否有办法确定我可以传递给编译器选项的最小值和最大值。例如:

-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万没有人在乎,每个人都认为你知道你在做什么。

当然,没有限制,编译器没有办法向你报告它们

最新更新