Неявная декларация - PullRequest
       34

Неявная декларация

0 голосов
/ 26 февраля 2012

Я использую Xcode 4.1 в Mac OS 10.7

#include <stdio.h>

int main (int argc, const char * argv[])
{
    int i, j;

    i = 1;
    j = 9;
    printf("i = %d and j = %d\n", i, j);

    swap(&i, &j);
    printf("\nnow i = %d and j = %d\n", i, j);

    return 0;
}

swap(i, j)
int *i, *j;
{
    int temp = *i;
    *i = *j;
    *j = temp;
}

Я получаю предупреждение "Неявное объявление функции" swap "недопустимо в C99

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

Объявите вашу функцию перед main:

void swap(int *i, int *j);

/* ... */
int main...

И определите ее позже:

void swap(int *i, int *j)
{
    /* ... */
}

В качестве альтернативы вы можете объединить два и переместить все определение до main.

0 голосов
/ 25 февраля 2019

Объявление переменной означает резервирование памяти для них. Не требуется объявлять переменную перед ее использованием. Всякий раз, когда VB встречает новую переменную, он назначает тип и значение переменной по умолчанию. Это называется неявным объявлением

0 голосов
/ 26 февраля 2012

Имя функции должно быть объявлено до ее использования в C99.

Вы можете либо определить свою функцию swap перед main, либо поместить объявление функции перед main.

Также вы используете определение функции старого стиля для функции swap.Эта форма является устаревшей функцией C, вот как вы должны определить свою функцию:

void swap(int *i, int *j)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...