DS>IMHO, очень жестокая техника. Но если очень надо...
Плохо, что компилятор понимает только С, так что этот вариант не особо подойдет.
А еще там Solaris и не-Intel процессор, и компилятор какой-то древний, так что приходится писать по-старинке.
Здравствуйте, Maslex, Вы писали:
RB>>>Проблема в том, чтобы получить сообщение на этапе препроцессинга.
E>>Да, в таком виде задача, конечно, нерешаема.
M>Почему не решаема. M>А файлики .i разве кто-то отменял.
Вот-вот, давайте подробнее про файлики .i. Кто и где требует их существования?
Проблема в том, что в рамках стандартного переносимого C/C++ эту задачу нельзя даже сформулировать. Пропроцессинг — только одна из фаз трансляции. Никто не требует, чтобы реализация вообще имела отдельно стоящий препроцессор или могла сохранять результат препроцессирования. (Строго говоря, реализация и не имеет права на такой "наивный" подход: сначала препроцессинг, затем компиляция полученного после препроцессора файла. Просто потому что в этом случае некоторые программы будут работать неверно.)
Re[3]: Вывести значение значение константы директивой препро
P>Плохо, что компилятор понимает только С, так что этот вариант не особо подойдет. P>А еще там Solaris и не-Intel процессор, и компилятор какой-то древний, так что приходится писать по-старинке.
boost/preprocessor — библиотека метапрограммирования на языке препроцессора. И, мне кажется, должна спокойно компилироваться и работать на старых C-шных компиляторах и не-Intel процессорах. Так что если будет желание, то вполне можно попробовать и на вашем страшном звере .
... << Rsdn@Home 1.1.4 beta 1 >>
Re: Вывести значение значение константы директивой препроцес
P>А есть способ узнать, какое значение в этот момент имеет KEYCODE_LENGTH? И вывести его на экран? Вычисляется это значение вложенными дефайнами из 5 различных файлов и в этом месте как раз 1000 и должно бы получиться. Код в тех файлах менять, к сожалению, нельзя. P>Помогите, плиз...
Здравствуйте, elcste, Вы писали:
E>(Строго говоря, реализация и не имеет права на такой "наивный" подход: сначала препроцессинг, затем компиляция полученного после препроцессора файла. Просто потому что в этом случае некоторые программы будут работать неверно.)
Это что-то новое или?
Re[3]: Вывести значение значение константы директивой препро
Здравствуйте, rus blood, Вы писали:
RB>Здравствуйте, Дмитрий Бл-й, Вы писали:
ДБЙ>>Рулит?
RB>А вывод числа не задом наперед получиться? RB>А лишних нулей не будет перед числом?
Более того -- число выводится в столбик, цифра за цифрой
Но человеку-то это нужно для отлова ошибочного значения константы при компиляции, тут уж не до красот, можно и потерпеть.
Re[9]: Вывести значение значение константы директивой препро
Здравствуйте, achp, Вы писали:
E>>(Строго говоря, реализация и не имеет права на такой "наивный" подход: сначала препроцессинг, затем компиляция полученного после препроцессора файла. Просто потому что в этом случае некоторые программы будут работать неверно.)
A>Это что-то новое или?
#include <stdio.h>
#define PLUS +
int main()
{
int i = 0;
printf("%d\n", PLUS+i);
}
Каким должен быть результат препроцессинга?
Re[10]: Вывести значение значение константы директивой препр
E>Потому что здесь две лексемы '+' и '+', а не одна '++'.
В самом деле. Но и препроцессинг оказывается на высоте — в результате препроцессинга получается
+ +i
Да здравствует мыло душистое и веревка пушистая.
Re[2]: Вывести значение значение константы директивой препро
На борланде проверил — рулит , надо будет запомнить.
Беда в том, что мой компилятор не понимает #pragma message — пришлось через #error восстанавливать число по одной цифре. Теперь все работает, спасибо!
... << RSDN@Home 1.1.3 stable >>
Re[15]: Вывести значение значение константы директивой препр
Здравствуйте, Vamp, Вы писали:
E>>Потому что здесь две лексемы '+' и '+', а не одна '++'. V>В самом деле. Но и препроцессинг оказывается на высоте — в результате препроцессинга получается V>+ +i
P>А есть способ узнать, какое значение в этот момент имеет KEYCODE_LENGTH? И вывести его на экран? Вычисляется это значение вложенными дефайнами из 5 различных файлов и в этом месте как раз 1000 и должно бы получиться. Код в тех файлах менять, к сожалению, нельзя. P>Помогите, плиз...