Как вы используете "список" ключевых слов пользователей? - PullRequest
0 голосов
/ 07 мая 2020

Для практической работы, над которой я работаю, я должен использовать "предустановленную" структуру для определенных функций. Один из них был следующим:

int initEmployees(Employee* list, int len)
{

//From here is my code

    int isError = -1;
    if ( len > 0)
    {
        len--;
        for (int i = 0 ; i < len ; i++)
        {

//This line is the problem, I know is not right but not sure how to fix it
            list[i].isEmpty = 1;

/*My other guesses where:
*(list + i).isEmpty = 1;
(*Employee + i).isEmpty = 1;
but im quiet sure they won't work either*/

        }
        isError=0;
    }
    return isError;
}

Пытался погуглить: "Ключевое слово пользователя codeblocks передано в STL!" и просматривая книгу 1991 C (испанский sh edit), проверяя, есть ли в ней ссылки на любую библиотеку, содержащую ее, но ничего.

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Прежде всего, list в этом контексте - это имя переменной, а не ключевое слово.

И нет ничего плохого в этом коде l oop, при условии, что структура Employee на самом деле имеет член isEmpty, которому вы можете назначить 1.

Он просто проходит через предоставленный массив (называемый list), по очереди устанавливая каждый элемент как пустой.

Однако ваша манипуляция с len кажется немного неправильной, я подозреваю, что она не изменит последний элемент в списке, поскольку вы уменьшаете его перед запуском l oop.

Я подозреваю, что более каноническая версия (включая это исправление) будет выглядеть примерно так:

int initEmployees(Employee* list, int len) {
    // Error if no elements in list.

    if (len < 1) return -1;

    // Mark each entry as empty.

    for (int i = 0 ; i < len ; i++) {
        list[i].isEmpty = 1;
    }

    // Everything is okay.

    return 0;
}

Но я также сомневаюсь, что возникает ошибка при нулевом размере списка. Мне кажется, что совершенно нормально изменять все элементы пустого списка - это просто означает бездействие.

И, если вы используете беззнаковые значения для размеров вещей (например, size_t), ваш " отрицательная "проблема уходит.

0 голосов
/ 07 мая 2020

list не является ключевым словом в C.

См .: https://en.cppreference.com/w/c/keyword

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...