我在robotc中编程,这只是带加载项的c编程(遵循所有c规则)。为了组织我的代码,我把我的子程序放在头文件中,并从我的主c文件中引用。我是否仍然可以从c文档中引用头文件中的方法,而无需在函数原型中添加函数原型 标题?
例如:
main1.c中的代码
#include header1.h
task main()
{
header_method();
}
header1.h中的代码(无函数原型)
header_method()
{
//do stuffs
}
或者我必须这样做:
void header_method();
header_method()
{
//do stuffs
}
原因是我只能在robotc中为我的机器人声明一定数量的全局变量。
答案 0 :(得分:4)
您应该(几乎)永远不会将函数定义放在头文件中,就像您在header1.h
中所做的一样。
头文件应包含函数声明(原型)。
(A" prototype"是一个函数声明,它指定参数的类型。有非原型函数声明不指定参数类型,但是它们已经过时了没有理由使用它们。)
函数定义(使用实现该函数的{
... }
代码)应该在.c
个文件中。
每个.c
文件对于它调用或定义的任何函数都应该有#include
指令。
每个头文件都应受到include guards的多重包含保护。
这个想法是每个函数声明在每个翻译单元(你编译的每个源文件)中只出现一次,并且每个函数定义在整个计划中只出现一次。
如果您的函数只在一个.c
文件中使用,则可以将其声明和定义放在同一个.c
文件中(您应该将其定义为{{ 1}})。实际上,如果定义出现在任何调用之前,则可以省略单独的声明;定义本身就是一个宣言。
(定义为static
的函数可能会使这个模型复杂化;我建议现在不要担心这个问题。)