In C language head file
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the difference between a definition and a declaration?
我对头文件中的函数declare感到困惑。这与Java一样,在一个文件上声明函数,其中文件有函数也有方法。在C语言中,是否将函数和方法放在两个不同的文件中?下面是一个例子:
歌曲H1 2 3 4 5 6 7 | typedef struct { int lengthInSeconds; int yearRecorded; } Song; Song make_song (int seconds, int year); void display_song (Song theSong); |
歌曲C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> #include"song.h" Song make_song (int seconds, int year) { Song newSong; newSong.lengthInSeconds = seconds; newSong.yearRecorded = year; display_song (newSong); return newSong; } void display_song (Song theSong) { printf ("the song is %i seconds long", theSong.lengthInSeconds); printf ("and was made in %i ", theSong.yearRecorded); } |
我能把这两个函数只写在一个文件上吗?
谢谢。我是新来C。
当做。本。
C中的函数有两种形式
- 声明:已指定签名,但未指定实现
- 定义:定义实现和签名
声明最好被视为以后函数定义的承诺。它声明了函数的外观,但没有告诉您它实际上做了什么。在头文件中添加共享函数的声明是常见的做法。
1 2 3 4 | // Song.h // make_song declaration Song make_song(int seconds, int year); |
现在,其他文件可以通过包含song.h使用
这是文件之间共享函数的标准约定,但决不是定义函数的唯一方法。C中的函数可以
- 只有一个定义。如果函数只在单个.c文件中使用,则无需在.h中声明它。它可以完全存在于.c文件中。
- 只有一个声明。声明一个函数,却从来没有给它一个定义,这是合法的,但令人困惑。无法调用函数,但代码将编译得很好
- 只有.h文件中有定义。这里有很多链接警告,但是可以在.h文件中完全定义函数。
您可以在一个文件中完成所有操作。头文件用于一些
(
例如,如果您有另一个文件使用了函数