Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [minGW] отключить warning ИЗ КОДА 
V
    Опции темы
borisbn
Дата 10.4.2012, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



Здравствуйте.
У меня есть исходник, который я собираюсь компилировать как в MSVC, так и в MinGW.
Код

bool addCounter( char *   szObjectName
   , char *   szInstanceName
   , char *   szCounterName
   )
{
...
    PDH_COUNTER_PATH_ELEMENTS_A pe;
    pe.szMachineName     = 0;
    pe.szObjectName      = szObjectName;      // объявлена как LPTSTR... без const
    pe.szInstanceName    = szInstanceName;
//и т. д.
}

bool res = addCounter( "Processor", "proc.exe", "Usage", ...  и т.д.

т.к. эти CENSORED мелкомягкие не сделали в своих API-шных структурах const-указатели, то и я не могу передавать в функцию const char *.
При этом студия на такой код не ругается, а MinGW - справедливо орёт на меня))
Вопрос: как во-первых узнать, что сейчас мы компилируемся MinGW, а во-вторых как отключить warning -Wwrite-strings в коде (не в настройках проекта) ?
Дело в том, что я хочу, чтобы мне выдавался такой warning, но не в этом месте.

Спасибо.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 10.4.2012, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 2
Всего: 110



Цитата(borisbn @  10.4.2012,  17:26 Найти цитируемый пост)
как во-первых узнать, что сейчас мы компилируемся MinGW

Код

#ifdef __MINGW32__
   ...
#endif // __MINGW32__

хотя не уверен что тебе нужно именно мингв. возможно более универсальным решением будет __GCC__ ?

Цитата(borisbn @  10.4.2012,  17:26 Найти цитируемый пост)
как отключить warning -Wwrite-strings в коде (не в настройках проекта) ?

говорят что так: http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html
не проверял smile

PM WWW   Вверх
borisbn
Дата 10.4.2012, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



boostcoder, чего-то даже проверка на MINGW/GCC не работает
http://liveworkspace.org/code/1b15425b2577...6cbf310c3be438b


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
boostcoder
Дата 10.4.2012, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 2
Всего: 110



упс, должно быть __GNUC__ или __GNUG__
опшипся smile

http://liveworkspace.org/code/f637754cb473...6c68311903e87ed

Добавлено через 1 минуту и 2 секунды
__GNUC__ - gcc C-mode
__GNUG__ - gcc C++-mode

Добавлено через 2 минуты и 12 секунд
вот предефайненые макросы gcc: http://docs.freebsd.org/info/cpp/cpp.info....Predefined.html
PM WWW   Вверх
borisbn
Дата 10.4.2012, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



о_О. Всё. Разобрался. Не 
Цитата(boostcoder @  10.4.2012,  17:35 Найти цитируемый пост)
универсальным решением будет __GCC__

а __GNUC__ 

И диагностик-прагмы работают. Пока только на LWS проверил. Завтра на MinGW проверю.

Спасибо.

Добавлено через 1 минуту и 24 секунды
Блин. Опять опоздал))
Цитата(boostcoder @  10.4.2012,  17:57 Найти цитируемый пост)
вот предефайненые макросы gcc:

там и подсмотрел


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
math64
Дата 25.6.2012, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



А может быть написать так:
Код

bool addCounter(const char *   szObjectName
   , const char *   szInstanceName
   , const char *   szCounterName
   )
{
...
    PDH_COUNTER_PATH_ELEMENTS_A pe;
    pe.szMachineName     = 0;
    pe.szObjectName      = (char*)szObjectName;      // объявлена как LPTSTR... без const
    pe.szInstanceName    = (char*)szInstanceName;
//и т. д.
}
bool res = addCounter( "Processor", "proc.exe", "Usage", ...  и т.д.

PM   Вверх
borisbn
Дата 25.6.2012, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



math64, спасибо. Действительно проще...
Но и тема полезная - узнал как warning'и отключать...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.1155 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.