Определение препроцессора VS2015 с точкой - PullRequest
0 голосов
/ 15 октября 2018

Я работаю над проектом и на странице Project -> Properties в препроцессоре c / c ++ -> у меня есть препроцессор deff "$ (USERNAME) TEST;".Мое имя пользователя "bob.p".

При сборке я получаю ошибку intellisense, говорящую "ошибка командной строки: недопустимое определение макроса: bob.pTEST".Удаление определения препроцессора или жесткого кодирования «bobpTest» без точки решает проблему.Есть ли способ исправить это, не удаляя определение препроцессора?т.е. пометить его как буквальное?пробовал использовать одинарные и двойные кавычки, но ни одна из них не работала.

edit:

Проблема в том, что мое имя пользователя Windows - "bob.p", а проект Visual Studio, над которым я работаю, имеет "$(USERNAME) TEST "как определяет препроцессор.Мое имя пользователя с точкой вызывает ошибку.Есть ли способ, которым я могу локально изменить значение $ (USERNAME), чтобы удалить точку, или добавить escape-последовательность в определение, чтобы экранировать точку?

1 Ответ

0 голосов
/ 15 октября 2018

Символ препроцессора не может иметь точку в своем имени (помните, что это то же самое, что и #define), однако вы можете сделать: USERNAME=$(USERNAME)TEST;

Используя такой символ (как строку) вПри обработке препроцессора источник немного усложняется, чтобы использовать значение в качестве строки, вам потребуется использовать оператор преобразования препроцессора (#):

#define STR_(x) #x
#define STR(x) STR_(x)

printf("My preprocesor symbol: %s\r\n", STR(USERNAME));
...