Как определить минимальное и максимальное значение, которое я могу передать опции компилятора?

Есть ли способ определить минимальное и максимальное значение, которое я могу передать опции компилятора. Например.:

-fconstexpr глубина = п

или же

-falign-переходы [= п]

Каковы минимальные и максимальные значения для n? Или еще лучше знать, что весь диапазон значений со всеми промежуточными значениями.

Я знаю, что это может и будет зависеть от кода, который я хочу скомпилировать. Но я предполагаю, что для некоторых опций компилятора максимальные и минимальные входные значения могут быть определены независимо от кода для компиляции.

0

Решение

Предположим, что вы спрашиваете о 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, никого не волнует, все предполагают, что вы знаете, что делаете.

И конечно, не имея ограничений, компилятор не может сообщить вам их.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector