Является ли Visual C++ таким же мощным, как gcc?
мое определение мощного-это способность настраивать.
Я знаком с gcc
Я хотел попробовать MSVC. Итак, я искал эквивалентные параметры gcc в msvc. Я не могу найти многих из них.
контроль результатов
Stop after the preprocessing stage; do not run the compiler proper.
gcc: -E
msvc: ???
Stop after the stage of compilation proper; do not assemble.
gcc: -S
msvc: ???
Compile or assemble the source files, but do not link.
gcc: -c
msvc:/c
полезно для отладки
Print (on standard error output) the commands executed to run the stages of compilation.
gcc: -v
msvc: ???
Store the usual “temporary” intermediate files permanently;
gcc: -save-temps
msvc: ???
- есть ли какое-то руководство по сопоставлению параметров компилятора GCC msvc?
- опция gcc Резюме списки больше вариантов в каждом разделе, чем параметры компилятора, перечисленные по категориям. В msvc отсутствует чертовски много важных и интересных вещей. Я что-то упускаю или msvc действительно менее мощный, чем gcc.
3 ответов
MSVC-это IDE, gcc-это просто компилятор. CL (компилятор MSVC) может выполнить большинство шагов, которые вы описываете с точки зрения gcc. CL /?
дает помочь.
Э. Г.
предварительный процесс для stdout:
CL /E
компилировать без ссылки:
CL /c
Generate assembly (в отличие от gcc, однако, это не предотвращает компиляцию):
CL /Fa
CL
на самом деле это просто компилятор, если вы хотите увидеть, какие команды IDE генерирует для компиляции и связывания самое простое, чтобы посмотреть раздел командной строки страниц свойств для элемента в IDE. CL
не вызывает отдельный препроцессор или ассемблер, поэтому нет отдельных команд для просмотра.
на -save-temps
, IDE выполняет отдельную компиляцию и связывание, поэтому объектные файлы сохраняются в любом случае. Для сохранения выхода предварительного процессора и выхода ассемблера вы можете включить /P
и /Fa
через ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ.
gcc
и CL
разные, но я бы не сказал, что MSVC не хватает "чертовски много" вещей, конечно, не выходы, которые вы ищете.
для эквивалента-E, cl.exe-файла / P (он не "останавливается после этапа предварительной обработки", но выводит вывод препроцессора в файл, что в значительной степени одно и то же).
для-S, это немного мрачнее, так как шаги" компиляция "и" сборка " происходят в нескольких местах в зависимости от того, что другое параметры, которые вы указали (например, если у вас включена оптимизация всей программы, то машинный код не генерируется до ссылки этап.)
для-v Visual C++ не совпадает с GCC. Он выполняет все этапы компиляции непосредственно в сл.exe (и ссылка.exe), поэтому нет" выполненных команд " для отображения. Аналогично для-save-temps: потому что все происходит внутри cl.exe и ссылка.exe напрямую, единственными "временными" файлами являются .obj файлы, которые cl.exe производит, и они всегда сохраняются в любом случае.
в конце концов, GCC является проектом с открытым исходным кодом. Это означает, что любой, у кого есть желание scratch может добавлять любые параметры командной строки, которые им нравятся, с относительно небольшим сопротивлением. Для Visual C++, коммерческого продукта с закрытым исходным кодом, каждый вариант должен иметь бизнес-кейс, совещания по дизайну, планы тестирования и так далее. каждая новая функция начинается с минус 100 очков.
оба компилятора имеют множество опций для изменения... всё. Я подозреваю, что любой вариант не присутствует в любой вариант, то не стоит делать в первую очередь. Большинство "нормальных" пользователей все равно не используют большинство этих опций.
Если вы смотрите исключительно на количество доступных опций в качестве меры "мощности" или "гибкости", то вы, вероятно, найдете gcc победителем, просто потому, что gcc обрабатывает многие платформы, отличные от Windows, и имеет конкретные параметры для многих из этих платформ, которые вы, очевидно, не найдете в MSVC. gcc (ну, GCC toolchain) также компилирует множество языков за пределами C и c++; я недавно использовал его для Objective-C, например.
EDIT: я с Дином сомневаюсь в обоснованности вашего вопроса. Да, MSVC (cl) имеет опции для эквивалента многих опций gcc, но нет, количество опций на самом деле не означает многого.
короче говоря: если вы не делаете что-то очень специальный, вы найдете MSVC легко "достаточно мощный" на платформе Windows, что вы, вероятно, не будет отсутствовать каких-либо параметров gcc.