Как посмотреть значение вычесленной константы на этапе компиляции
#pragma message("messagetext")
выводит текстовое сообщение. а как вывести значение константы, вычисленной при компиляции, например
SIZE = sizeof(Array)*sizeof(ULONG)
LPCTSTR lpOutputString // string to be displayed
);
только конечно, сначала приведи свою переменную (а не константы!) к строковому типу (itoa) и т.п.
VOID OutputDebugString(
LPCTSTR lpOutputString // string to be displayed
);
только конечно, сначала приведи свою переменную (а не константы!) к строковому типу (itoa) и т.п.
Человек же просил на этапе компиляции.
Как сделать стандартными методами, я не знаю.
А вот с точки зрения нестандартных решений,- хорошая задачка, получил удовольствие при её решении.
Моё решение такое:
template<int T> class _CONSTANT_VALUE_IS;
#define _PRE_CONST_VALUE(T) typedef _CONSTANT_VALUE_IS<T>;
Способ применения:
int main()
{
const int SIZE = sizeof(int)*sizeof(int);
const int SIZE2 = 5*10+5;
_PRE_CONST_VALUE(SIZE)
_PRE_CONST_VALUE(SIZE2)
return 0;
}
Правда, вид сообщения будет странноват :о)
X:\xxxxx\xxxx.cpp(13) : warning C4091: 'typedef ' : ignored on left of 'class _CONSTANT_VALUE_IS<16>' when no variable is declared
но цель достигнута, - видим значение константы:
_CONSTANT_VALUE_IS<16>
для тех, кто в танке: число в угловых скобках
P.S. Необходимо проследить, чтоб не был отключен warning C4091.
хватаюсь за голову и бегу в книжный...
error C2196: case value '2236416' already used
Напридумывали проще надо быть
вот то решение которое придумали между прочим умные люди я для написания кода пользуюсь Visual Studio 7 (.NET)
просто ставишь BreakePoint'ы и запускаешь в режиме DEBUG после того как программа прервется в указаном месте
в меню выбираешь DEBUG->Window->Watch->Watch(1-4)
там вводишь название переменной и ENTER получаешь её результат и так любая переменная только там где нужно поставь BreakePoint и ВСЕ
желаю удачи и думай головой
помоему вам надо всем дружно месяц не сидеть за компютером вы думать перестаёте
Напридумывали проще надо быть
вот то решение которое придумали между прочим умные люди я для написания кода пользуюсь Visual Studio 7 (.NET)
просто ставишь BreakePoint'ы и запускаешь в режиме DEBUG после того как программа прервется в указаном месте
в меню выбираешь DEBUG->Window->Watch->Watch(1-4)
там вводишь название переменной и ENTER получаешь её результат и так любая переменная только там где нужно поставь BreakePoint и ВСЕ
желаю удачи и думай головой
Ты отличаешь этап компиляции от этапа отладки приложения?
Многие проблемы можно решить ещё при компиляции.
А совет быть проще и не сидеть за компьютером ты дай Андрею Александреску (http://moderncppdesign.com/) В данной задаче я использовал его принципы разработки ПО.
Если бы люди всегда пользовались дедовскими способами, то ты рубил бы программы зубилом на каменной доске. Кто думать перестает я определять не стану, но на мой взгляд, чтоб поставить бряк много ума не надо.
P.S. Анекдот в тему:
- Что пишешь?
- Сейчас запущу,- узнаю.
Норма. Без обид.
Ок :)
В споре рождается истина... и умирает любовь... :D