You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

哪些隐式声明合法有效?除标识符__func__外还有哪些相关示例?

合法的隐式声明范围

你提到的两条无效规则,针对的是用户自定义函数、普通变量的隐式声明。C标准明确规定、由编译器自动提供的特殊标识符不属于这个范畴,是合法有效的,这类标识符大多是预定义宏或者编译器自动注入的特殊常量。

常见的合法隐式声明标识符

除了你提到的__func__(C99及以上标准规定,每个函数内自动声明的静态字符串常量,存储当前函数名)之外,还有大量标准规定的同类标识符,常用的包括:

  • __FILE__:字符串常量,存储当前源文件的编译路径
  • __LINE__:整型常量,存储当前代码在源文件中的行号
  • __DATE__:字符串常量,存储当前源文件的编译日期,格式为Mmm dd yyyy
  • __TIME__:字符串常量,存储当前源文件的编译时间,格式为hh:mm:ss
  • __STDC__:整型常量,标准C兼容的编译器会将其定义为1,标识当前环境符合C标准要求
  • __STDC_VERSION__:整型常量,标识当前使用的C标准版本,比如C99对应值为199901L、C11对应值为201112L
  • __STDC_HOSTED__:C11及以上标准新增,值为1表示当前是带完整标准库的宿主环境,值为0表示是无操作系统的裸机环境
    不同编译器也会额外提供一些扩展的预定义隐式标识符,比如GCC的__GNUC__、Clang的__clang__、MSVC的_MSC_VER等,只要是对应编译器官方文档明确说明的,同样属于合法有效的隐式声明。
    需要注意:除了上述标准或者编译器明确规定的特殊标识符之外,所有用户自定义函数、普通变量的隐式声明均为无效,符合你给出的两条规则。

内容的提问来源于stack exchange,提问作者pmor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:18:01