C中的.p文件是什么?

时间:2014-12-28 06:13:39

标签: c sdl

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

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

3 个答案:

答案 0 :(得分:4)

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

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

gcc -c foo.c

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

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

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

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

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

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

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

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

答案 1 :(得分:0)

我从未听说过.p扩展程序,但它看起来像一个头文件。你说C编译器不关心你给它的扩展名是对的。

答案 2 :(得分:0)

.p通常与matlab应用程序相关联。 link打破了其他语言与.p相关联的内容 并且是的,编译器并不关心文件的扩展名