【发布时间】:2015-03-30 08:57:45
【问题描述】:
如果一个函数被声明为
static char *function(...) { ... }
是说这是返回static char *的非静态函数,还是返回非静态char *的静态函数?
比较以下两个函数。哪一个是正确的用法?
static char *fn1(void)
{
static char s[] = "hello";
return s;
}
static char *fn2(void)
{
char *s = malloc(6);
strcpy(s, "world");
return s;
}
【问题讨论】:
-
static char *不是类型 -
其实
void是多余的,会让一些编译器崩溃。 -
@Prof.Falken,我认为
fn1(void),至少在C89 中,意味着我声明了一个不带参数的函数,而fn1()意味着未指定参数(即,在没有发明原型的想法的旧时代)。我错了吗? -
@TavianBarnes。感谢您的简洁回复!
-
我不确定,但我认识到过去使用 void
fn1(void)的做法。是C89还是只是渎职,我不知道。但是我最近看到了一些编译器错误,可能是 Visual Studio。
标签: c function-prototypes