c - "static"在 C 中是什么意思?`

标签 c

<分区>

Possible Duplicates:
What does “static” mean in a C program?
Static vs global

C 中“static”是什么意思,举个例子:“static struct .......”?

这和没有“static”的“struct ......”有什么区别?

最佳答案

在函数之外,static 使它所应用的任何内容都具有文件范围。例如:

int a_function(int x) { ... }

此函数将具有全局链接,并且可以被任何其他目标文件访问。您只需声明它即可使用它,就像通常在头文件中所做的那样:

int a_function(int x);

但是,如果您在定义中使用 static,则该函数仅对定义它的源文件可见:

static int a_function(int x) { ... }

在那种情况下,其他目标文件不能访问这个函数。这同样适用于变量:

static int x;

这使得 x 成为一个全局变量,只在它的源文件中可见。 “静态结构”本身不会做任何事情,但请考虑以下语法:

struct {
    int x;
    int y;
} p1, p2;

这声明了两个全局变量(p1 和 p2),每个都是“匿名”结构类型。如果附加静态:

static struct {
    int x;
    int y;
} p1, p2;

然后静态应用于 p1 和 p2,使它们仅在其源文件中可见。

关于c - "static"在 C 中是什么意思?`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287259/

相关文章:

c - 指针显示与预期不同的值

c - C 中的通用指针和内存分配

c - 如何告诉 GTK 从外部更新应用程序?

c++ - 在c中后台运行线程

java - __builtin_clz 的 Java 等价物是什么?

c - 测量功能前后的挂钟时间

c - C 语言中的多堆栈程序在一定数量的故意溢出和最顶层自动删除后显示不正确的元素

c - 从 sys/socket.h 了解 msghdr 结构

C指针在集合中的加减法。 6.5.6

c++ - 用 C++ 文件编译 C 共享对象