首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法一起使用extern和static存储类说明符

在C语言中,externstatic是两种不同的存储类说明符,它们分别具有不同的作用和用途。

extern是一个链接类型说明符,用于声明外部变量或函数。当在一个源文件中使用extern声明一个变量或函数时,它告诉编译器该变量或函数的定义在其他源文件中,并且在链接阶段需要找到这个定义。如果没有找到定义,编译器会报错。

static是一个存储类说明符,用于声明静态变量或函数。静态变量和函数的作用域仅限于定义它们的源文件,在其他源文件中无法访问。此外,静态变量在程序运行期间只会被初始化一次,并且在程序运行期间一直保持其值,直到程序结束。

因此,externstatic存储类说明符不能一起使用,因为它们的作用和用途相互矛盾。如果在同一个变量或函数声明中同时使用externstatic,编译器会报错。

如果需要在多个源文件中共享一个变量或函数,可以在一个源文件中定义它,并在其他源文件中使用extern声明。如果只需要在当前源文件中使用一个变量或函数,可以使用static存储类说明符。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C语言符号意思(看了必懂系列)「建议收藏」

    所有的努力都不会完全白费,你付出多少时间和精力,都是在对未来的积累。世界上什么都不公平,唯独时间最公平,你是懒惰还是努力,时间都会给出结果。 auto :声明自动变量 一般不使用 double :声明双精度变量或函数 int: 声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用) long :声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) char :声明字符型变量或函数 extern:声明变量是在其他文件正声明(也可以看做是引用变量) return :子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const :声明只读变量 float:声明浮点型变量或函数 short :声明短整型变量或函数 unsigned:声明无符号类型变量或函数 continue:结束当前循环,开始下一轮循环 for:一种循环语句(可意会不可言传) signed:生命有符号类型变量或函数 void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:计算数据类型长度 volatile:说明变量在程序执行中可被隐含地改变 do :循环语句的循环体 while :循环语句的循环条件 static :声明静态变量 if:条件语句

    02

    C语言自学(一)C语言基础

    auto 声明自动变量 break 跳出当前循环 case 开关语句分支 char 声明字符型变量或函数返回值类型 const 声明只读变量 continue 结束当前循环,开始下一轮循环 default 开关语句中的其他分支 do 循环语句的循环体 double 声明双精度浮点型变量或函数返回值类型 else 条件语句否定分支(与if连用) enum 声明枚举类型 extern 声明变量或函数是在其他文件或本文件的其他位置定义 float 声明浮点型变量或翻书返回值类型 for 一种循环语句 goto 无条件跳转语句 if 条件语句 int 声明整型变量或函数 long 声明长整型变量或函数返回值类型 register 声明寄存器变量 return 子程序返回语句 short 声明短整型变量或函数 signed 声明有符号类型变量函数 sizeof 计算数据类型或变量长度(即所占子结束) static 声明静态变量 struct 声明结构体类型 switch 用于开关语句 typedef 用于给数据类型取别名 unsigned 声明无符号类型变量或函数 union 声明共用体类型 void 声明函数无返回值或无参数,声明无类型指针 volatile 说明变量在程序执行中可被隐含地改变 while 循环语句的循环条件

    02
    领券