我知道总是先执行main()函数,然后函数调用会将程序定向到其他函数。如果*在main ()函数之前调用函数会怎样?他们什么时候被处决?\
我有一个程序(我从网上下载的),在 main() 之前有函数调用。
现在我不知道如果只在 main () 中执行它们(以及在 main 中调用的函数)它们是做什么用的。
这是程序的片段:
static void set_level_indices (VideoParameters *p_Vid);
static void chroma_mc_setup (VideoParameters *p_Vid);
static void init_img (VideoParameters *p_Vid);
static void init_encoder (VideoParameters *p_Vid, InputParameters *p_Inp);
static int init_global_buffers (VideoParameters *p_Vid, InputParameters *p_Inp);
static void free_global_buffers (VideoParameters *p_Vid, InputParameters *p_Inp);
static void free_img (VideoParameters *p_Vid, InputParameters *p_Inp);
static void free_params (InputParameters *p_Inp);
static void encode_sequence (VideoParameters *p_Vid, InputParameters *p_Inp);
*(SOME FUNCTION DECLARATIONS OMITTED)*
int main(int argc, char **argv)
{
init_time();
#if MEMORY_DEBUG
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#endif
alloc_encoder(&p_Enc);
Configure (p_Enc->p_Vid, p_Enc->p_Inp, argc, argv);
// init encoder
init_encoder(p_Enc->p_Vid, p_Enc->p_Inp);
// encode sequence
encode_sequence(p_Enc->p_Vid, p_Enc->p_Inp);
// terminate sequence
free_encoder_memory(p_Enc->p_Vid, p_Enc->p_Inp);
free_params (p_Enc->p_Inp);
free_encoder(p_Enc);
return 0;
}
现在我想到了,静态是否与在 main() 还可以之前完成的这些调用有关?
这是H.264在其参考软件中的编码器。
编辑
上面的代码是main()函数调用、函数原型还是函数声明。你们都给出了不同的答案。请选择一个并通过展示格式来解释原因。我真的以为这些语句是函数调用的形式。此外,函数原型可以包含在源代码中而不是头文件中吗?谢谢!