Есть ли способ определить минимальное и максимальное значение, которое я могу передать опции компилятора. Например.:
-fconstexpr глубина = п
или же
-falign-переходы [= п]
Каковы минимальные и максимальные значения для n? Или еще лучше знать, что весь диапазон значений со всеми промежуточными значениями.
Я знаю, что это может и будет зависеть от кода, который я хочу скомпилировать. Но я предполагаю, что для некоторых опций компилятора максимальные и минимальные входные значения могут быть определены независимо от кода для компиляции.
Предположим, что вы спрашиваете о GCC (это следует из тегов).
Параметр fconstexpr-глубина определен в gcc / c-family / c.opt следующим образом:
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, никого не волнует, все предполагают, что вы знаете, что делаете.
И конечно, не имея ограничений, компилятор не может сообщить вам их.
Других решений пока нет …