Функция swap() в книге Essential C не компилируется

wtf.c:11:6: ошибка: ожидаемые спецификаторы объявления или '...' перед '&' замена токена (&a, &b);

wtf.c: 11: 10: ошибка: ожидаемые спецификаторы объявления или '...' перед '&' замена токена (&a, &b);

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

static void Swap(int *x, int *y){
  int temp;
  temp = *x;
  *x = *y;
  *y = temp;
}

int a = 1;
int b = 2;

Swap(&a, &b);

Я ожидал, что это скомпилирует хотя бы точный пример из книги, но, видимо, даже это невозможно.

1 ответ

Решение
#include <stdio.h>

static void Swap(int *x, int *y){
  int temp;
  temp = *x;
  *x = *y;
  *y = temp;
}

int main()
{
  int a = 1;
  int b = 2;

  Swap(&a, &b);
  printf("%d %d\n", a, b);
  return 0;
}

Это компиляция и выполнение вывести "2 1", как вы можете видеть, подкачки работает


У вас были ошибки компилятора из-за формы Swap(&a, &b); который не является ни декларацией, ни определением (это вызов функции)

Как отмечается в примечании, точкой входа любой программы на C является автоматически вызываемая функция main для более подробной документации по C

Другие вопросы по тегам