Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt проект определение строкового макроса с пробела


Автор: math64 19.1.2012, 09:11
Код
DEFINES += PATH=\\\"C:/Program Files/\\\"

Код
const char path[] = PATH;

раскрывается так
Код
const char path[] = "C:/Program -DFiles/";

Как правильно определить макрос с пробелом?

Автор: bsa 19.1.2012, 09:56
Сначала попробуй заключить все в кавычки, если не поможет, то попробуй перед пробелом с обратными слэшами поэкспериментировать (1, 2 или 3 поставить)

Автор: spyswamp 19.1.2012, 11:01
Определи его прямо в коде, проблем не будет.
Либо сделай precompiled header, если тебя подмывает что-то написать в pro-файле. smile

Оффтоп: дира Program Files - это вообще адовая жесть. Не понимаю кем надо быть, чтобы туда вообще что-то ставить. Или у вас в шиндовсе любят пути с пробелами повсеместно? А че без русских букв? С ними же круче.

Автор: borisbn 19.1.2012, 11:10
Можно сделать
Цитата
DEFINES += PATH=C:/Progra~1

Будет работать.

Добавлено через 2 минуты и 55 секунд
Цитата(spyswamp @  19.1.2012,  11:01 Найти цитируемый пост)
Оффтоп: дира Program Files - это вообще адовая жесть. Не понимаю кем надо быть, чтобы туда вообще что-то ставить. Или у вас в шиндовсе любят пути с пробелами повсеместно? А че без русских букв? С ними же круче.

Не у "вас в шиндосе", а у них (у пользователей, для которых программа рассчитана). Если у Вас, spyswamp, пользователи только иксовые - сочувствую, т.к. эта аудитория на пару порядков меньше.

Автор: spyswamp 19.1.2012, 11:29
"Наши" пользователи хранят "свои" данные в %APPDATA% или ~ и прав на всякие %WINDIR% и прочие %Program*% не имеют. А наши программисты используют для работы с путями QDir или Boost.Filesystem.

Автор: borisbn 19.1.2012, 11:35
spyswamp, ты ж не знаешь, зачем math64 потребовался путь к Program Files... Может для того, чтобы проверить, есть ли рядом с exe-шником какая-нибудь определённая dll-ка. Хотя, соглашусь, что писать в проекте или в коде "Program Files" - неправильно, хотя бы потому, что этот каталог может называться "Program Files x64" или как-то так.
Лучше всего спрашивать его у системы.

Автор: spyswamp 19.1.2012, 11:38
Угум, или QApplication::applicationDirPath(). Короче, не будем спорить. smile Пис.  smile 

Автор: Sahab 20.1.2012, 00:45
Код

QString QDesktopServices::storageLocation ( StandardLocation type /* QDesktopServices::ApplicationsLocation */ ) [static]

Автор: math64 20.1.2012, 09:38
Цитата(spyswamp @  19.1.2012,  11:01 Найти цитируемый пост)
Оффтоп: дира Program Files - это вообще адовая жесть

Это просто для примера. У меня другой путь с пробелом.
Причём на разных машинах разный. Чтобы не менять исходники, определил макрос в проекте.
Проверил в linux - нужно три кавычки с разным количеством слешей перед ними.
Код

win32:DEFINES += "PATH=\"\\\"C:/Program Files/\\\"\""
unix:DEFINES += "PATH=\"\\\"$$(HOME)/Program Files/\\\"\""

А по уму, действительно нужно использовать файл конфигурации.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)