在C语言头文件中
可能重复:
定义和声明有什么区别?
我对头文件中声明的函数感到困惑。 这与java一样,在一个文件上声明函数,该文件中有函数也有方法。 在C中做,在两个不同的文件中做功能和方法? 这里是一个例子:
song.h
typedef struct {
int lengthInSeconds;
int yearRecorded;
} Song;
Song make_song (int seconds, int year);
void display_song (Song theSong);
song.c
#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 %in", theSong.yearRecorded);
}
我可以在一个文件上写这两个函数吗?
谢谢。 我是新来的C.
问候。 本。
C中的函数以两种形式存在
声明最好是可视化的,作为后面函数定义的承诺。 它声明了函数的外观,但不会告诉你它实际上做了什么。 通常的做法是在头文件中添加文件之间共享的函数声明。
// Song.h
// make_song declaration
Song make_song(int seconds, int year);
现在其他文件可以通过包含Song.h来使用make_song
。 他们不需要知道它的签名是什么。 这些定义通常放置在一个.h文件中,其名称与定义它们的.h文件相同。
这是文件间共享函数的标准约定,但决不是定义函数的唯一方法。 C中的函数是可能的
你可以在一个文件中做所有事情。 头文件是你需要在一些.c
文件之间共享的东西。
( #include
实际上是 - 预处理器用song.h
的内容替换那一行)
例如,如果你有另一个使用display_song
函数的文件,你应该在其中包含song.h
,所以当编译器编译它时,它会知道这个函数及其参数。