C указатель на указатель: неиспользуемая переменная - PullRequest
1 голос
/ 24 октября 2010

Я просто делал свое первое приложение на C, и у меня есть это предупреждение (отредактировано): unused variable pp

int compteur =  1;
int *p = &compteur;
int **pp = &p;

Я просто пытался заставить pp указывать на адрес переменной p

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

Ответы [ 4 ]

3 голосов
/ 24 октября 2010

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

3 голосов
/ 24 октября 2010

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

2 голосов
/ 24 октября 2010

Что ж, если это единственное, что делает ваша программа, то да, компилятор правильно предупредит вас о неиспользуемых переменных, потому что вы ничего с ними не делаете!

Если бы вы сделали, например, printf("%d\n", **p);, тогда предупреждение должно исчезнуть.

1 голос
/ 24 октября 2010

У меня есть это предупреждение (отредактировано): неиспользованная переменная pp

Благодарность за соблюдение (и беспокойство и вопрос) предупреждающего сообщения компилятора.Продолжайте в том же духе. (я всегда компилирую с -Werror, чтобы «предупреждения» рассматривались как «ошибки». Я всегда нахожу это полезным.)

Цитирование со страницы предупреждений gcc :

-Wunused-variable

Предупреждать всякий раз, когда локальная переменная или непостоянная статическая переменная не используется помимо своего объявления.Это предупреждение включено -Wall.

Строго говоря, имеет смысл объявить переменную и затем не использовать ее.Это относится к pp, и компилятор предупреждает об этом.В этом конкретном случае,

  • либо вы используете pp некоторым обязательным способом, либо

  • используйте его в"неоперативный" способ.

Ниже приведен код для способа "no-op":

int main() {

    int compteur = 1;
    int *p = &compteur;
    int **pp = &p;
    (void) pp;            // no-op use of pp
}

Для получения дополнительной информации об использовании no-op см. Другой поток: Что делает следующий код?

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