出于对定义和范围的好奇,typedef
我在 2 个 .c 文件中编写了以下 C 代码:
主程序
#include <stdio.h>
int main()
{
int a = 5, b = 6;
printf("a = %d, b = %d\n", a, b);
swap(&a, &b);
printf("a = %d, b = %d\n", a, b);
}
交换文件
typedef T;
void swap(T* a, T* b)
{
T t = *a;
*a = *b;
*b = t;
}
令我惊讶的是,代码文件可以使用 Visual Studio C 编译器 ( cl.exe /Tc main.c swap.c
)
并且程序运行正常!据我了解,typedef
需要 2 个参数,但为什么这段代码会编译并运行?
为了进一步分析,在主函数中,我声明了另外 2 个浮点变量,并在交换 2 个整数后尝试交换两者,但这一次编译失败(使用 cl.exe)。令人惊奇的是,代码可以用 Tiny C ( tcc.exe main.c swap.c
) 编译和运行,所以它像模板方法一样工作!