C语言:在.c文件中定义未在.h文件中声明的函数是不是很糟糕?

时间:2015-01-03 19:58:05

标签: c

我在.h文件中声明了一个函数。

void func1();

在.c文件中除了func1我定义了func2并在func1的定义中使用它(func2未在.h文件中声明)

void func2()
{
   do something;
}

void func1()
{
   func2();
   do something else;
}

为什么我这样做是因为我不想在.h文件中声明func2(此函数不会在模块外部使用)。所以,是的,我想在C中创建一种“私人”功能。 我的问题是:这是一种不好的做法吗?还有另一种在C模块中创建“私有”功能的方法吗?

2 个答案:

答案 0 :(得分:2)

不,它不是main()是一个典型的例子。

但是如果函数没有在头文件中定义,它只能从.c文件本身正确调用,因此应该声明static

static void func2()
{
   do something;
}

使其成为staic将使外部呼叫者无法使用(因此,您无法使main()成为静态)

为了警告这种模式,有一个gcc选项来警告以前没有原型的非静态功能 -Wmissing-prototypes

答案 1 :(得分:2)

这是一个非常好的做法,经常使用。这确实用于创造一种“私人”功能。这样做时,您通常也会将函数声明为static,例如:

static void func2()
{
   do something;
}

这样,该函数仅可供此c文件中的代码使用。否则,如果你知道原型,你仍然可以在另一个文件中使用该函数。