Префикс «RC» в номере ошибки и сообщении является большой подсказкой. Это не компилятор C++, который отключает этот код, а resource compiler.
Компилятор ресурсов даже не понимает весь язык C. Он имеет минимальный препроцессор, который выполняет постоянную подстановку. Он не понимает объявления переменных, таких как:
const float AXIS_WIDTH = 2E6F; // invalid for resource compiler
const float AXIS_HEIGHT = 2.0; // invalid for resource compiler
const int THE_ANSWER = 42; // invalid for resource compiler
Единственное, что он понимает макросы:
#define THE_ANSWER 42
Великий, так что теперь только вопрос, почему это компилируется компилятором ресурсов. Я предполагаю, что вы знаете, вводите ли вы его в файл ресурса вашего проекта (.rc), поэтому я думаю, что у вас есть его в файле resource.h
, который входит в файл ресурсов (который, в свою очередь, , скомпилированный компилятором ресурсов).
Переместить это константное объявление в другой заголовочный файл, то есть , а не, включенный в файл ресурсов вашего проекта. Он отлично работает со всеми версиями компилятора C++, так же как Simon и др. сказали. Значения с плавающей запятой в любом случае мало полезны в файле ресурсов.
Знаете ли вы, что он делает в VC++. Net? –
Вы, вероятно, хотите 'const float AXIS_WIDTH = 2000000.0;'. '2e6f' тоже должен работать. –
Работает для меня с VS2010 (x64) и VS2015 (x64). –