Essential C 书中的 Swap() func 无法编译

Swap() func in the book Essential C does not compile

wtf.c:11:6: 错误:预期的声明说明符或“...”在“&”标记之前 交换(&a, &b);

wtf.c:11:10: 错误:预期的声明说明符或“&”标记前的“...” 交换(&a, &b);

不想求助于 Whosebug 来解决我的个人问题,但我无法弄清楚。代码和书上的完全一样。我也试过制作分离的指针并将它们用作参数,但我得到了同样的错误。有人可以阐明我做错了什么吗?我正在使用 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);

我希望它至少能编译出书中的确切示例,但显然这不可能。

#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有效


由于 Swap(&a, &b); 不是声明也不是定义(它是函数调用)的形式,您遇到了编译器错误

正如评论中所说,任何 C 程序的入口点都是函数 main,它会自动调用,有关 C

的更多信息请阅读文档