c - C 中的 .p 文件是什么?

标签 c sdl

我找到了this project Github 上,一个使用 SDL 的简单贪吃蛇游戏。在这个项目中,这个人似乎在 file 中声明了一堆函数。带有 .p 扩展名。

这个扩展是什么?我以前从未遇到过这种情况。他们在 main function 之前调用此文件。 ,为什么 C 将其读取为有效格式并且似乎没有问题? .p 扩展名是我没有遇到过的语言的实际部分吗?如果不是,是否可以在文件末尾添加任何扩展名,只要它是有效的 C 语言,就可以编译它?

最佳答案

该项目中包含的文件snake.p是一个C头文件。

C 编译器通常关心命令行上给出的源文件的名称。例如,C 源文件可能名为 foo.c,因此

gcc -c foo.c

将使 gcc 假定它包含 C 源代码。其他后缀表示其他语言(.cpp 表示 C,.adb 表示 Ada 等)。 (还有一个选项可以显式指定语言,但它很少使用,我什至不记得它是什么,而且它很可能因不同的编译器而异。)

但是,头文件(也称为包含文件)通常不会作为编译器命令行上的参数传递,因此相同的要求不适用。对于 C 头文件使用 .h 扩展名几乎是通用的约定,但是当预处理器看到 #include 指令时,它真正关心的是 C 头文件的内容文件,而不是其名称的形式。

我见过一个 .inc 扩展名用于不寻常的包含文件(包含函数定义而不是大多数头文件中常见的声明)。

在此特定项目中,文件 snake.p 是使用名为 cproto 的工具从 snake.c 文件生成的。 Makefile中的相关命令是:

.c.p:
        @$(CPROTO) $(CPROTOFLAGS) $(INCLUDES) $< -o $@ &>/dev/null

其中表示可以通过运行 cproto 命令从 snake.c 生成 snake.p,该命令生成 C 原型(prototype)(函数声明) 来自包含函数定义的 C 源代码。可能 .p 代表“原型(prototype)”。

snake.p 文件命名为 snake.h 更为常见,因为它只是一个头文件。更常见的情况是,将该文件包含在发行版中,因为它是由构建过程自动生成的 - 但也许作者希望尚未安装 cproto 的用户> 能够构建项目。

底线:这只是该项目作者的一个不寻常的选择。我想不出使用 .p 扩展名而不是传统的 .h 扩展名的任何充分理由,但它不会破坏任何内容。

关于c - C 中的 .p 文件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27674113/

相关文章:

c - SDL2 窗口大小比应有的大

c - 灯光师固定时间步长丢帧

c - VBO究竟如何保存其内容?

c - 在 C 中使用 YAJL 解析 json

检查数字是否存在于同一行或列矩阵中

c - 如何在 Linux 中使用 SDL?

c++ - SDL_TTF header 给我带来麻烦

c - 如何优化此功能? (使用几乎所有的处理能力)

c - 从文件中读取,放入数组并打印到文件中

c - K&R 练习 1-8 计算空格、制表符和新行