crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Возврат данных из функции
maxvanceffer
  опции профиля:
сообщение 9.4.2012, 15:05
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сдрасте всем. Вопрос на верно не столько к Qt сколько к самому С++. Вопрос в следующем, в Qt не работает обработка try, catch ... а вот как обезопасить себя если к примеру функция ничего не возвращает, к примеру :


int number()
{}

int main()
{
   cout << number(); // Вот тут как бы эксепшн, как обезопасить себя в Qt от этого !
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 9.4.2012, 15:27
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(maxvanceffer @ 9.4.2012, 16:05) *
в Qt не работает обработка try, catch ...


Что вы имеете ввиду, поясните пожалуйста?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 9.4.2012, 15:29
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


с чего это перестал работать ? Во вторых вообще компиляцию не должен ьыл пройти. number без return
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zloiia
  опции профиля:
сообщение 9.4.2012, 18:11
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 25
Регистрация: 5.5.2011
Пользователь №: 2655

Спасибо сказали: 5 раз(а)




Репутация:   0  


Цитата(maint @ 9.4.2012, 16:29) *
Во вторых вообще компиляцию не должен ьыл пройти. number без return

Ну вообще то это не ошибка. Это предупреждение. Если не сказать компилятору обрабатывать предупреждения как ошибки , то все шикарно соберется, только небольшой матюг в логах будет типа
Цитата
||=== cpptest, Debug ===|
D:\Projects\TESTS\cpptest\main.cpp||In function 'int number()':|
D:\Projects\TESTS\cpptest\main.cpp|7|warning: no return statement in function returning non-void|


И такой случай не вызывает исключения. Тут, мне кажется, только ужесточением требований к компилятору можно решить проблему.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 9.4.2012, 18:46
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


отсутствие return не всегда остановит компиляцию, как уже сказано выше. К примеру, наличие хотя бы одного условного оператора с оператором return внутри, позволит скомпилировать код, но будет выдано предупреждение. И если реально выполнение дойдёт до "висячего" места, то будет возврат произведён неинициализированного параметра (на самом деле возвращаемый параметр уже заранее лежит в стеке, но если с ним явно не работали, там будет мусор)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 21:55