Ответ 1
Это будет сделано:
#define NEW_LINE "\n" // Note double quotes
Printf("Output" NEW_LINE);
(Технически это компилятор, соединяющий строки, а не препроцессор, но конечный результат тот же.)
Есть ли способ заставить предварительный процессор С++ расширить значение # define'ed в строковый литерал?
например:
#define NEW_LINE '\n'
Printf("OutputNEW_LINE"); //or whatever
Это выглядит так, как это должно быть возможно, как это было до компиляции?
Или есть лучшая модель дизайна для достижения такого поведения (не прибегая к исправлениям времени выполнения, например sprintf)?
EDIT Я понимаю, что #define может быть злым, но ради аргументов...
ДОПОЛНИТЕЛЬНО Кто-нибудь критикует этот подход?
Это будет сделано:
#define NEW_LINE "\n" // Note double quotes
Printf("Output" NEW_LINE);
(Технически это компилятор, соединяющий строки, а не препроцессор, но конечный результат тот же.)
Если я правильно помню, это
Printf("Output" NEW_LINE);
Вы можете сделать следующее.
#define NEW_LINE "\n"
printf("Output" NEW_LINE);
#define NEW_LINE "\n"
printf("Output" NEW_LINE); //or whatever
должен сделать трюк.
Ну....
printf("Output%s", NEW_LINE);