Неявное объявление

Я использую 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;
}

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


person Rounak    schedule 26.02.2012    source источник
comment
возможный дубликат Что означает неявное объявление функции? -- пожалуйста воспользуйтесь поиском, прежде чем задавать новый вопрос.   -  person Felix Kling    schedule 26.02.2012


Ответы (3)


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

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

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

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

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

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

person cnicutar    schedule 26.02.2012

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

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

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

void swap(int *i, int *j)
{
    ...
}
person ouah    schedule 26.02.2012

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

person Sonali Ghosh    schedule 24.02.2019
comment
В вопросе четко указано, что они используют xcode, почему вы сделали ссылку на Visual Basic в своем ответе. Если вы хотите объяснить неявное объявление пользователю, задающему вопрос, используйте язык, с которым он знаком или о котором спрашивает. - person Alan Savage; 25.02.2019