реклама на сайте
подробности

 
 
> Аргумент в функции - was set but never used
Jenya7
сообщение Jun 26 2017, 09:53
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть функция
Код
const char* PARSER_ParseBlock(const char* text, char* buf, uint32_t buf_size, uint32_t *text_type, char* block_start_addr)
{
    char type = 0;
    char* b = buf;
    uint32_t s = buf_size;
    const char* p = text;
    for(;*p != 0; p++)
    {
    if(p[0] == 'S' && p[1] == 'O' && (p[2] == 'I' || p[2] == 'A')) // check start of block SOI-start of instraction, SOA-start of action
        {
        if (type != 0) // start of next block without end of previous, start over
            {
        b = buf;
        s = buf_size;
        }
            
            block_start_addr = (char*)&p[0];
        type = p[2];
            *text_type =  type;
        p += 2;
    }
        else if(type)
        {
            // write in a buffer
        if (p[0] == 'E' && p[1] == 'O' && (p[2] == 'I' || p[2] == 'A')) // check end of block
            {
        if(type != p[2]) //end of block not this type
                {
            b = buf;
            s = buf_size;
            type = 0;
        }
                else
                {
            *b = 0;
            return p + 3;
        }
        }
            else if(s > 1)
            {
                // there is a place in buffer
        *b = *p;
         s--;
         b++;
        }
            else
            {
              *buf = 0;
            }
    }
    }
    *b = 0;
      
    return NULL;
}

При компиляции получаю Warning[Pe550]: parameter "block_start_addr" was set but never used
Что то не могу понять где подвох.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lagman
сообщение Jun 26 2017, 14:18
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Я видел как делают другие, чтобы избавиться от этого предупреждения, надо в начале функции до всяких if написать block_start_addr = block_start_addr;
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jun 27 2017, 04:41
Сообщение #3


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Lagman @ Jun 26 2017, 17:18) *
Я видел как делают другие, чтобы избавиться от этого предупреждения, надо в начале функции до всяких if написать block_start_addr = block_start_addr;
Стандартный способ подавить предупреждения компилятора о неиспользуемом аргументе функции
Код
(void) block_start_addr;

Можно написать в любом месте, но обычно пишут либо в начале, либо в конце, чтобы сразу бросалось в глаза.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 27 2017, 06:11
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (andrew_b @ Jun 27 2017, 07:41) *
Стандартный способ подавить предупреждения компилятора о неиспользуемом аргументе функции
Это не указывать этот аргумент. Т.е. если у нас функция int test(in arg) не использует arg, то и писать его не нужно:
CODE
int test(int)
{
    ......
}

Но автор ветки, как оказалось, хотел использовать аргумент, просто не сумел это с первой попытки правильно объяснить компилятору.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 15:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016