介绍与编译运行

翻译整理自 C 语言历史 与 cppreference - C 编译。

1. C 语言简史

  • 1972 Dennis Ritchie 在贝尔实验室设计 C,用于重写 UNIX 内核
  • 1978 K&R《The C Programming Language》出版
  • 1989 ANSI C 标准(C89 / ISO C90)
  • 1999 C99(变长数组、// 注释、long long、内联函数)
  • 2011 C11(_Static_assert、原子操作、线程支持)
  • 2018 C17(缺陷修复)
  • 2024 C23(更多现代特性)

2. 安装编译器

Linux

sudo apt install gcc clang make
gcc --version

macOS

xcode-select --install   # 自带 clang

Windows

  • MinGW-w64:pacman -S mingw-w64-x86_64-gcc
  • MSVC:装 Visual Studio Build Tools
  • LLVM Clang:choco install llvm

3. 第一个程序 Hello World

hello.c:

#include <stdio.h>

int main(void)
{
    printf("Hello, World!\n");
    return 0;
}

编译与运行:

gcc hello.c -o hello
./hello
# Hello, World!

4. GCC 常用参数

参数 含义
-o <name> 指定输出文件名
-O2 / -O3 优化
-g 生成调试信息
-Wall -Wextra 开启警告
-std=c11 指定标准
-DNAME=val 定义宏
-I<path> 头文件搜索路径
-L<path> -l<lib> 库搜索路径与库名

完整建议:

gcc -std=c11 -Wall -Wextra -O2 -g hello.c -o hello

5. 程序结构

#include <stdio.h>          // 预处理指令
#define PI 3.14             // 宏定义

// 函数声明(原型)
int add(int a, int b);

int main(void)              // 程序入口
{
    int sum = add(1, 2);
    printf("%d\n", sum);
    return 0;
}

// 函数定义
int add(int a, int b)
{
    return a + b;
}
  • 每个 C 程序必须有且仅有一个 main
  • main 返回 int,0 表示成功
  • #include 把头文件内容插入到当前位置

小结

到此已经能编写、编译、运行 C 程序。下一章学习基本语法。