在头文件中使用静态函数的优缺点是什么?
问问题
4842 次
1 回答
3
假设您在头文件中实现它,每次包含您的头文件时,都会重复该功能。这意味着大量生成的二进制文件、糟糕的实践以及调试和维护的整体噩梦。
如果只是在header中定义,则需要在每个C文件中实现。
编辑
- 如果它不在标头中,则您有一个具有给定名称的函数,多次实现,从而提供可能不同的行为。否则,不要将其设为静态并实施一次。拥有多个同名函数对维护者来说是一个陷阱(因此调试和维护地狱)
- 静态函数和内联函数是不同的事情。静态函数是“语言环境”,而内联函数是“将被调用它们的主体替换”。在开销方面,调用标准函数或静态函数是相同的“性能代价”。
编辑 2 这是您可能遇到的陷阱
静态的.h
#ifndef _STATIC_H_
#define _STATIC_H_
#include <stdio.h>
static void printer(void);
void nonStatic (void);
#endif
交流
#include "static.h"
static void printer(void)
{
printf ("half the truth : 21\n");
}
int main (void) {
printer();
nonStatic();
}
公元前
#include <stdio.h>
#include "static.h"
static void printer (void)
{
printf("Truth : 42\n");
}
void nonStatic(void)
{
printf ("Non static\n");
printer();
}
查看这段代码,您从 2 个不同的位置调用“打印机”,您会得到不同的行为:
D:\temp>gcc -o temp.exe a.c b.c && temp
half the truth : 21
Non static
Truth : 42
在这个小例子中很明显,当隐藏在一个大软件中时真的很棘手
于 2012-07-09T07:32:56.380 回答