Доступ к копии структуры. Я получаю сообщение об ошибке: запрос на членство 'count' в чем-то, не являющемся структурой или объединением - PullRequest
0 голосов
/ 05 марта 2012

По какой-то причине я не могу получить доступ к procNames.count. Все, что мне нужно сделать, это увеличить счетчик. Я не уверен почему. Кто-нибудь видит проблему?

struct config_line {
    char name[MAX_WORD];
    int time;
};

struct config {
    struct config_line *lines;
    int count;
};

//global variable
struct config configData;

// allocate memory to procNames
procNames = malloc(sizeof(struct config));
if ( procNames == NULL ) {
    printf("problem allocating memory, for procNames. int procnanny(void)");
    return 0;       
}
//local variable
struct config *procNames;

procNames = &configData;
// the problem
procNames.count++;

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Использование:

procNames->count++;

procNames - это указатель, поэтому вам нужно использовать это или длинное число:

(*procNames).count++;

Оператор . можно использовать только в том случае, если значение на LHS является структурой. Когда у вас есть указатель на структуру, вы должны либо использовать ->, либо разыменовать указатель, а затем применить оператор ., который требует скобки, а также *, поскольку . связывает более жестко, чем унарный (разыменование ) *.

1 голос
/ 05 марта 2012

Должно быть

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