Препроцессорные операторы # и ## в языке "C"
что они делают написано в документации. 6.10.3.2 и 6.10.3.3
а для чего их можно использовать это уже другой вопрос.
Я примерно представляю что они делают:
# - заключает в кавычки выражение после него,
## - соединяет 2 выражения, что по обе стороны от оператора.
Казалось бы бессмысленные вещи... НО! Кто-то мне говорил, что с помощью них как-то можно делать преобразование из десятичной системы в двоичную, например.
Хотелось бы узнать поподробнее, кто-нибудь знает?
Казалось бы бессмысленные вещи... НО! Кто-то мне говорил, что с помощью них как-то можно делать преобразование из десятичной системы в двоичную, например.Первый раз слышу.
А так я их использовал для получения имени текущего компилируемого файла и номера строки в виде, собственно, подходящем для распечатывания. Как-то так:
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define MY__LINE__ TOSTRING(__LINE__)
(ну и потом с __FILE__ склеить)
Оставить комментарий
viktop72
Кто-нибудь знает что это такое и для чего их предумали?