返回静态类型数据可能会产生什么影响。我们什么时候应该使用它?
static ssize_t
my_read(int fd, char *ptr)
{
//code from Stevens Unix Network programming.
if (something)
return (-1)
if (something else)
return (0)
return (1)
}
为什么静态在这里?
感谢。
答案 0 :(得分:30)
该函数是静态的,而不是返回类型。这意味着它的名称仅在当前编译单元中可见,该单元用作封装机制。
但是,仍然可以通过函数指针从其他地方调用该函数。
有关更多背景信息,另请参阅this discussion on the general static
keyword。
答案 1 :(得分:1)
当返回指向在被调用函数中创建的变量的指针时,我们使用静态数据类型。例如
float * calculate_area(float r)
{
float *p;
static float area;
p=&area;
area=3.14*r*r;
return p;
}
如果你将区域设置为自动变量,即没有任何类型限定符,当控制从被调用函数返回时它将被销毁。当声明为静态时,你也可以正确地从main中检索区域的值。因此它为了它坚持其价值,我们将其视为静态。
答案 2 :(得分:0)
通过使用static
,对静态函数的访问仅限于声明了它们的文件
使函数成为静态的另一个原因是在其他文件中重用相同的函数名。
//file1
static void fun1(void)
{
cout<<"file1";
}
// file2
// now if we include file1 and use fun1 in file2 , it
// will show “undefined reference to `fun1’” error as
// it fun1 is defined static
int main(void)
{
fun1();
getchar();
return 0;
}