Я компилирую проект под VS2012 и GCC (CodeBlocks) для Windows. На VS2012 все работает отлично. Под НКУ я получить следующее сообщение об ошибке компиляции:GCC- Недопустимое использование регистра
C:\Users\Piotrek\AppData\Local\Temp\ccfdl0Ye.s|164|Error: invalid use of register|
C:\Users\Piotrek\AppData\Local\Temp\ccfdl0Ye.s|166|Error: invalid use of register|
C:\Users\Piotrek\AppData\Local\Temp\ccfdl0Ye.s|221|Error: invalid use of register|
||=== Build finished: 3 errors, 14 warnings (0 minutes, 0 seconds) ===|
Я с помощью опции компилятора -fpermissive - Он не должен иметь ничего общего с ошибкой.
Я просто не понимаю, почему он указывает на временный файл в папке Local Temp и говорит, что я использую неправильный регистр?
Есть ли у кого-нибудь идеи о том, что происходит?
GCC на самом деле не одна программа, это набор программ, которые запускаются один за другим.Сначала есть препроцессор, тогда есть реальный компилятор, компилятор генерирует ассемблерный код, который подается на ассемблер, который генерирует объектные файлы, используемые компоновщиком для создания окончательного исполняемого файла. Файл, упомянутый в сообщении об ошибке, является сгенерированным файлом ассемблера. Хотя это не сильно помогает вашей проблеме, я надеюсь, что это объясняет, почему у вас есть эти временные файлы. –
@JoachimPileborg: Выглядит больше как ошибка компилятора для меня. Предупреждения указывают * потенциальные * семантические ошибки, но если ошибка генерируется ассемблером, это, вероятно, указывает на недостаток в компиляторе. –
Моя вторая лучшая ставка заключается в том, что есть несоответствие в флагах, предоставляемых ассемблеру и компилятору - это один код генерации, например. для SSE, и каждый ожидает устаревший набор инструкций x86. Лучше всего, чтобы код содержал asm-директиву, которая является VS2012 в синтаксисе Intel, а gcc ожидает AT & T. asm-директивы передаются как «как». –