Jay*_*Jay 5 c variables static
AFAIK,我们可以在不同的函数中有两个同名的静态变量吗?编译器和符号表如何管理它们?他们的身份如何单独管理?
编译器不会将静态变量的名称存储在链接符号表中。就链接器而言,它们只是模块的一部分的一些内存。(这可能不是在所有情况下 100% 正确,但实际上是正确的)
静态变量的名称通常包含在调试符号表中。
当您将 .c 文件提供给编译器时,它会记录所有已知符号的名称,以便在将来的代码中出现它们时能够识别它们的含义。它还会记住它们,以便可以提供有用的错误/警告消息,但在生成输出文件时它几乎会忘记它们(除非正在生成调试符号)。