Russian Qt Forum
Ноябрь 22, 2024, 02:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Заставить MinGW выбрасывать ошибку если функция не возвращает значения  (Прочитано 5112 раз)
schmidt
Гость
« : Август 28, 2013, 13:27 »

Добрый день,

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

Код:

/* Скомпилируется без проблем, но результат работы непредсказуем */
int dummyFunc();

int main()
{
    cout << "Hello World!" << endl;

    int num = dummyFunc();
    cout << num << endl;

    return 0;
}

//-----------------------------------------------------------------------------
int dummyFunc() {
    int tstamp = time(NULL);
    ++tstamp;
    --tstamp;

    void* ptr;
}

« Последнее редактирование: Август 28, 2013, 19:57 от Schmidt » Записан
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #1 : Август 28, 2013, 14:03 »

Код:
>g++ --version
g++.EXE (Built by MinGW-builds project) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


>cat 3.cpp
int f(int i) {
  if (i > 0)
    return 1;
}

int main() {
  f(1);
}

>g++ -Werror=return-type 3.cpp
3.cpp: In function 'int f(int)':
3.cpp:4:1: error: control reaches end of non-void function [-Werror=return-type]
cc1plus.exe: some warnings being treated as errors
Записан
schmidt
Гость
« Ответ #2 : Август 28, 2013, 15:27 »

Спасибо, посмотрел документацию по gcc, это то, что нужно ) В Qt Creator это делается добавлением

Код:
QMAKE_CXXFLAGS +=-Werror=return-type

к файлу проекта, или указанием дополнительного параметра "QMAKE_CXXFLAGS +=-Werror=return-type" в дополнительных аргументах qmake.

А как задать в Qt Creator опции qmake глобально, чтобы не указывать их отдельно для каждого проекта?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Август 28, 2013, 17:59 »

А как задать в Qt Creator опции qmake глобально, чтобы не указывать их отдельно для каждого проекта?
Добавить эту опцию в \mkspecs\win32-g++-4.6\qmake.conf
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
schmidt
Гость
« Ответ #4 : Август 28, 2013, 19:57 »

Благодарю за просвещение  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 22.