какую версию C # я использую
Я совершенно не знаком с С#, поэтому, пожалуйста, не слишком сильно меня бить. Что меня удивляет тем, что я не смог найти этот ответ на SO, поэтому я думаю, что мне не хватает чего-то или чего-то плохого в поисках вещей. BTW, этот вопрос не отвечает, хотя название предполагает, что он должен.
Спасибо за ответы. Сейчас я понял, что это зависит от платформы .NET, но есть ли программный способ выяснить мои рамки? (не переходя в каталог и не проверяя имя моих папок .NET)
Как проверить версию компилятора с
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
- ProfileText
- Sign in
Answered by:
Question
Answers
The compiler will predefine some macros that you can detect to determine which compiler you are using.
For example, Microsoft Visual C++ is defining _MSC_VER to a value:
You should be able to make use of something like #ifdef _MSC_VER and #if _MSC_VER > 1400 or whatever your specific needs are.
You can also detect symbols like __WIN32__ to detect if you are in a Windows build environment. Some compilers will define __unix__ or __APPLE__ if your build environment is of that variety.
Finding version of Microsoft C++ compiler from command-line (for makefiles)
I must be missing something really obvious, but for some reason, the command-line version of the Microsoft C++ compiler (cl.exe) does not seem to support reporting just its version when run. We need this to write makefiles that check the compiler version a user of our tool has installed (they get makefiles with code they are to compile themselves locally, so we have no control over their compiler version).
In gcc, you just give the option -v or —version to get a nice version string printed.
In cl.exe, you get an error for -v.
I have read the MSDN docs and compiler online help, and I cannot find the switch to just print the compiler version. Annoyingly, you always get the version when the compiler starts. but you seem not to be able to start the compiler just to get the version out of it.
Finding compiler vendor / version using qmake seemed similar, but only deals with the simple case of gcc.
I am trying this with VC++ Express 2005, if that matters. I hoped it would not, as detecting the compiler version is best done in a compiler-version-independent way 🙂
Есть ли способ выяснить версию компилятора в коде?
можно ли получить версию компилятора в коде? например, используя некоторые директивы компилятора?
Я пытаюсь узнать о версии компилятора, а затем скажем, если версия Gcc или же Visual C++ является C++11 совместим, а затем скомпилировать этот бит кода, а если нет, то вместо этого скомпилировать этот фрагмент
Решение
В gcc и clang вы можете использовать __VERSION__ макро.
Другие решения
Ты можешь использовать __cplusplus макрос для проверки, поддерживает ли компилятор C ++ 11, чтобы он работал даже на тех компиляторах, о которых вы не знаете.
16.8 Предопределенные имена макросов
1 Следующие имена макросов должны быть определены __cplusplus
Имя __cplusplus определяется значением 201103L при компиляции модуля перевода C ++.
157) Предполагается, что будущие версии этого стандарта заменят значение этого макроса на большее значение. Несоответствующие компиляторы должны использовать значение не более пяти десятичных цифр.
Если вы хотите узнать, какой компилятор вы используете, у них есть собственные предопределенные макросы для этого, связанные в других комментариях. Но вы указываете, что делаете это для того, чтобы обнаружить наличие поддержки C ++ 11. В этом случае правильный код
Согласно стандарту, компиляторы должны установить эту переменную, и она указывает версию. Смотрите это на Страница Бьярне