Форум программистов, компьютерный форум CyberForum.ru

Убрать предупреждения на break в операторе switch(...) - C++

Восстановить пароль Регистрация
 
J10
4 / 4 / 0
Регистрация: 30.04.2011
Сообщений: 50
28.05.2011, 01:43     Убрать предупреждения на break в операторе switch(...) #1
Никак не пойму, как можно перекроить этот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//***************************************************************************
unsigned long flength (unsigned short type, unsigned long length)
{
        switch(type)
                {
                case 1:
                        return (sizeof(BYTE)*length);
                        break;
                case 2:
                        return (sizeof(char)*length);
                        break;
                case 3:
                        return (sizeof(short)*length);
                        break;
                case 4:
                        return (sizeof(long)*length);
                        break;
                case 5:
                        return (sizeof(long)*2*length);
                        break;
                }
}
чтобы не выдала предупреждений:

Код
  [C++ Warning] TiffMethod.h(8): W8066 Unreachable code
  [C++ Warning] TiffMethod.h(11): W8066 Unreachable code
  [C++ Warning] TiffMethod.h(14): W8066 Unreachable code
  [C++ Warning] TiffMethod.h(17): W8066 Unreachable code
  [C++ Warning] TiffMethod.h(20): W8066 Unreachable code
  [C++ Warning] TiffMethod.h(22): W8070 Function should return a value
Только как нибудь так:

C++
1
2
3
4
5
6
7
unsigned long flength = 0;
 
if (type == 1)
       flength = sizeof(BYTE)*length;
else
       if ... // И так до (type == 5)
result = flength;
Или есть способ проще?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.05.2011, 02:00     Убрать предупреждения на break в операторе switch(...) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
unsigned long flength (unsigned short type, unsigned long length)
{
    switch(type)
    {
    case 1: return (sizeof(BYTE)*length);
    case 2: return (sizeof(char)*length);
    case 3: return (sizeof(short)*length);
    case 4: return (sizeof(long)*length);
    case 5: return (sizeof(long)*2*length);
    default: return 1;
    }
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.05.2011, 02:00     Убрать предупреждения на break в операторе switch(...) #3
брейки никогда не достигнутся... -> их можно убрать.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.05.2011, 05:19     Убрать предупреждения на break в операторе switch(...) #4
немного другой подход
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdint.h>
 
uint32_t fl(uint16_t type, uint32_t len){
    static const uint32_t sizes[] = { sizeof(uint8_t), sizeof(char), sizeof(short), sizeof(long), sizeof(long) * 2 };
    return ( type < 1 || type > sizeof(sizes) / sizeof(*sizes) ) ? 0 : len * sizes[type - 1];
}
 
#define LEN 1
 
int main(void){
    int t;
    
    while ( printf("Type: ") && scanf("%d", &t) == 1 )
        printf("Size: %d\n", fl(t, LEN));
    
    return 0;
}
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
28.05.2011, 06:49     Убрать предупреждения на break в операторе switch(...) #5
Цитата Сообщение от Maxwe11 Посмотреть сообщение
default: return 1;
Не суть вопроса, но думаю, что если не найдено совпадений, то в данном случае не уместно возвращать 1.
Yandex
Объявления
28.05.2011, 06:49     Убрать предупреждения на break в операторе switch(...)
Ответ Создать тему
Опции темы

Текущее время: 04:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru