macos — Как мне скомпилировать исходный код в c ++ на mac, чтобы обеспечить его правильную компиляцию в компиляторе Windows Visual Studio при соблюдении ANSI / ISO

Я учусь на уроке, и я ожидаю, что исходный код, который мы представим, будет скомпилирован на нашем компьютере профессора. Кажется разумным. Я действительно не хочу устанавливать окна или использовать визуализацию. Один из моих одноклассников написал, что приведенный ниже код поможет. Есть мысли по этому поводу? Можно ли улучшить его, чтобы он был ближе к строгой компиляции ANSI / ISO c ++?

$ g++ -std=c++98 -Wall -Wextra -Werror main.cpp -o outputprogram

Моя ОС 10.8.x
g ++ это:

  i686-apple-darwin11-llvm-g++-4.2

А gcc это

 i686-apple-darwin11-llvm-gcc-4.2:

0

Решение

Как я должен скомпилировать исходный код в c ++ на Mac, чтобы убедиться, что он будет правильно компилироваться в Windows Visual Studio Complier при соблюдении ANSI / ISO

Вы действительно не можете этого сделать. Невозможно. Компиляторы ведут себя немного по-разному в разных местах, и иногда это приводит к сбоям компиляции и / или немного другому поведению программы. Когда дело доходит до компилятора Microsoft, он может успешно скомпилировать код, который ставит в тупик G ++ (обычно шаблоны), и наоборот, и это даже если вы не учитываете нестандартные функции и расширения. Таким образом, единственный верный способ проверить компилятор — использовать этот компилятор.

Проблемы, с которыми я лично сталкиваюсь при разработке кода, который должен работать с g ++ / cl.exe (cl.exe == компилятор Microsoft).

  1. По сравнению с cl.exe, g ++ невероятно медленный, по крайней мере, для Windows. (В 2,5 раза медленнее)
  2. g ++ иногда не может скомпилировать шаблонные конструкции, процессы cl.exe просто отлично.
  3. cl.exe не может обрабатывать безумно большие строковые константы (по сравнению с g ++).
  4. cl.exe (VS2008 express) не может обнаружить кодировку UTF8 без спецификации.
  5. Смешивание кодировок с cl.exe (когда ОС использует кодировку A, исходный файл находится в кодировке B, и вы хотите отобразить строку wchar_t с помощью функции, которая требует кодирования C), — это кошмар.
  6. Стандартные функции библиотеки C отличаются для cl.exe / g ++. Один компилятор может иметь функцию, которой нет в другом компиляторе (некоторые из них не имеют функции string * ncmp), компилятор может иметь нестандартные функции, которых нет в другом компиляторе (strcpy_s), и некоторые функции могут вести себя по-разному с определенными аргументами (sprintf с «% S»)
  7. Передача -Wall в cl.exe выдает тысячи предупреждений за безвредный код, если включен windows.h. Эти предупреждения не могут быть исправлены.

Там было, вероятно, больше, но это то, что я помню сейчас.

Я правда не хочу устанавливать windows

Вы можете попробовать использовать Вино установить компилятор Microsoft на MacOS. Я ожидаю, что вы не сможете установить Visual Studio IDE используя wine (ваш пробег может быть опасным), но вы должны иметь возможность запускать компилятор только для командной строки, который поставляется вместе с Windows Driver Kit. Чтобы использовать компилятор таким образом, вы должны быть действительно знакомы с ним, поэтому установка Windows на виртуальную машину будет, вероятно, намного проще.

3

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

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

По вопросам рекламы [email protected]