Оказывается у Си-шного препроцессора есть операция склейка ##.пример №1 :#define VAR(a,b) a##bint main (int arg, char* argv[]){int VAR (k,31)=10;printf ( "Source [%d]\n", k31 );return 0;}
пример №2 :
#include
#define STR(NAME, STRING, NUM, BYTES...) struct { char bytes[NUM]; char string[sizeof(STRING)]; \
} NAME##_tmp_s = {{BYTES}, STRING}; \
char *NAME = (char*)&NAME##_tmp_s
#define VAR1 35 /* то же, что и '#' */
#define VAR2 32 /* то же, что и ' ' */
int main()
{
STR(str, 'hello', 2, VAR1, VAR2); /* получим аналог char *str = '# hello'; */
STR(str2, 'hello', 1, VAR1); /* получим аналог char *str2 = '#hello'; */
printf(''%s'\n', str);
printf(''%s'\n', str2);
return 0;
}"Пример взят отсюда :
forum.opennet.ru - "Си - вставить число в строку символов (спасите мозг!)" (9): "
вторник, 2 марта 2010 г.
Склейка
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий