Мне просто интересно, что -fpermissive
делает флаг в компиляторе g ++? Я получаю:
ошибка: взятие адреса временного [-fpermissive]
что я могу решить, передав -fpermissive
флаг компилятору.
РЕДАКТИРОВАТЬ : Я только что обнаружил, что вызывало временную ошибку адреса! Я собираюсь исправить эту часть прямо сейчас.
c++
gcc
compiler-options
mmirzadeh
источник
источник
-fpermissive
Флаг заставляет компилятор сообщать некоторые вещи, которые на самом деле ошибки (но допускаемые некоторые компиляторы) в качестве предупреждения, чтобы код разрешения компилирует , даже если он не соответствует правилам языка. Вам действительно следует исправить основную проблему. Разместите наименьший компилируемый образец кода, демонстрирующий проблему.источник
Когда вы написали что-то, что не разрешено языковым стандартом (и, следовательно, не может быть четко определенным поведением, что является достаточной причиной, чтобы этого не делать), но случайно отображается на какой- то исполняемый файл, если его наивно кормить механизм компиляции
-fpermissive
будет делать это вместо того, чтобы останавливаться с этим сообщением об ошибке. В некоторых случаях программа будет вести себя именно так, как вы изначально планировали, но вам определенно не следует полагаться на нее, если у вас нет особых причин не использовать какое-либо другое решение.источник
Если вам нужен реальный вариант использования для этого, попробуйте скомпилировать очень старую версию X Windows - скажем, XFree86 или XOrg примерно 2004 года, прямо в районе разделения - используя "современную" (кашляющую) версию gcc. , например 4.9.3.
Вы заметите, что в сборке CFLAGS указаны как «-ansi», так и «-pedantic». Теоретически это означает «взорвать, если что-то хоть немного нарушает спецификацию языка». На практике gcc серии 3.x не улавливает очень много подобных вещей, и сборка его с помощью 4.9.3 оставит дымящуюся дыру в земле, если вы не установите CFLAGS и BOOTSTRAPCFLAGS на «-fpermissive».
Используя этот флаг, большинство этих файлов C будут фактически построены, что позволит вам перейти к зависящим от версии обломкам, которые сгенерирует лексер. знак равно
источник