Какой компилятор я могу использовать? - PullRequest
2 голосов
/ 04 января 2012

Я должен импортировать и работать с C ++ Project.Тем не менее, я не могу заставить его работать без Microsoft Visual Studio.Автор проекта сказал мне, что я должен использовать компилятор Microsoft, потому что только он может обрабатывать определенные нотации, которые он использовал (например, создание объектов на лету при передаче его методу).См. Пример.

lights.push_back(Light(Vector(dirx,diry,dirz).normalize(), Color(colr, colg, colb)));

Я должен был создать векторный объект раньше и передать его методу.

Может кто-нибудь сказать мне, какой компилятор я могу использовать?У меня не хватает потока битов, чтобы загрузить 3 ГБ Visual Studio.Замечательным, но не обязательным был бы компилятор, который я могу использовать в Mac OS.

cheers.

Ответы [ 2 ]

9 голосов
/ 04 января 2012

Любой компилятор C ++ может «создавать объекты на лету, передавая их функции» (их часто называют временными объектами или значениями).

Что Visual C ++ может делать, что обычно могут другие компиляторы C ++Эти временные объекты передаются в функции через параметры, которые являются неконстантными ссылками.Стандарт C ++ специально запрещает такое поведение, но MSVC допускает это (Microsoft называет это расширением).

Я предполагаю, что именно от этого поведения зависит автор проекта.

2 голосов
/ 04 января 2012

Если вы работаете в Mac OS, то компилятором по умолчанию является (для последней версии) Clang (на основе LLVM).

И вам повезло, что в Clang есть режим совместимости для анализа кода MSVC, которыйобычно довольно продвинутый.Например, текущая вершина древовидной версии может анализировать около каждого сгенерированного заголовка MFC.

Вы можете активировать этот режим, используя -fms-extensions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...