to Programmer
Большое спасибо. Не думал в MSDN глянуть, а зря ... (как выяснилось)
После беглого обзора написанной информации, я было уже обрадовался. Но, оказалось, что не всё так просто. Думал, есть даже два варианта, но прогадал. (Может, кому-нибудь будет интересно. Поэтому я приведу их)
Цитата:
#define BEGSTR "Blah-Blah-Blah %"
#define MYINTSIZE "30"
#define ENDSTR "d\n"
#define FORMATSTR BEGSTR MYINTSIZE ENDSTR
printf(FORMATSTR,i);
|
Здесь переменная i типа int;
или
Цитата:
#define FORMATOUT(Format,Par) printf("Blah-Blah-Blah %" #Format "d\n",Par)
FORMATOUT(10,i);
|
Но как видно, что варианты не то решение, которое я хотел, т.к. в первом случае MYINTSIZE это макрос-СТРОКА, и я не знаю как использовать этот макрос, как целочисленную константу (т.е. i=MYINTSIZE не пройдёт, пойдёт i=atoi(MYINTSIZE), но это тоже нехорошо, т.к тратятся такты проца на этапе выполнения). Но всё равно этот вариант довольно таки хорош, т.к. можно объявить #define MYINTSIZE 30 и #define S_MYINTSIZE 30. И незабыть их менять одновременно (особенно при большом количестве таких констант) будет удобнее, чем в ранее предложенном варианте 2).
Второй дан, чисто из-за любознательности, т.к. вместо числа 10, можно подставить лишь число и никак не макрос-константу, и тем более не переменную и понятно по каким причинам.
Вот и сталкнулся я с несовместимостью строковой константы и числовой константы, хотя поидее для препроцессора (не для компилятора) они отличаются лишь ковычками """, ведь после препроцессора, за обработку вступает компилятор, а значит, все числовые константы всё равно должны быть оставлены в символьном виде (т.е. препроцессор либо копирует строки, либо переводит символьные константы в строки). Странно, что нет возможности (хотя может, это я просто не нашёл) перевести числовые константы в строковые константы и наоборот. Так что возникает вопрос "Или это по большому счёту никому не нужно, или что-то я не так понимаю?".
Почитал я man cpp. Но там вообще нет никакой документации о синтаксисе, правилах использования, "фишках", только мануал но исплользованию программы cpp