我最近写了一段这样的C代码:
static void func1()
{
}
static void func2()
{
}
typedef void (*func_t)(void);
const func_t lookUpTable[FUNC_COUNT] =
{
[FUNC1] = &func1,
[FUNC2] = &func2
}
另一个程序员在同一个文件上工作,并将其更改为:
static void func1();
static void func2();
typedef void (*func_t)(void);
const func_t lookUpTable[FUNC_COUNT] =
{
[FUNC1] = &func1,
[FUNC2] = &func2
}
static void func1()
{
}
static void func2()
{
}
由于funcN函数仅通过查找表调用,因此我实际上不需要这些函数的声明。
是口味问题还是编码风格被认为是好/坏习惯?
确实,这主要是个人喜好问题(编码风格总是以某种方式成为意见问题;合作伙伴的风格与将所有代码放在其他定义之后的习惯保持一致)。
在实践中,你会更好地确保你的函数名是唯一的(它使grep
-ing对他们来说更容易,而且gdb
会更容易地找到他们)在整个程序中,即使它们是可见的或只使用一个内部的翻译单元。
顺便说一句,让您的功能为非静态也有一些好处。例如,在Linux上,backtrace(3)和dladdr(3)函数更适合使用全局命名的函数。
而且,有时计算出的goto和线程代码(甚至是普通的大号switch
....)比通过指针间接调用short函数的表分派要快。(调用函数的少量开销(例如,运行其序言和结语)有时可能对于微小且快速运行的代码很重要)。见参考这里和那里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句