Большое целочисленное литеральное форматирование источника в переполнении стека

Я работаю с очень большим целочисленным литералом, например:

#define X 999999999999

Чтобы улучшить читабельность, я попытался изменить это на:

#define X 999/**/999/**/999/**/999

Но компилятор был как «Нах Бру ..»

Есть ли способ сделать их более читабельными?

Просто чтобы уточнить, этот вопрос задают только о появлении значений в исходном коде. Я не спрашиваю, как отформатировать эти значения в printf или что-нибудь.

3

Решение

Вы можете сделать это в определении (но не вне определения):

#define X 999##111##333##444

Я не уверен, что рекомендую это, но это законно. (## является оператором конкатенации токенов препроцессора.)

Вы явно не спрашивали о форматировании вывода, поэтому, вероятно, вас также не интересует форматирование ввода, но оба они могут быть ориентированы на локаль, что включает в себя использование группирующих символов, специфичных для локали.

4

Другие решения

Вы могли бы сделать это:

#include <boost/preprocessor.hpp>
BOOST_PP_SEQ_CAT((345)(678)(901))

Который будет отображаться в исходном коде как:

345678901
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector