C语言文献中的modifier和qualifier

C文献中的modifier和qualifier

引子

在读C语言英文文章时,谈到诸如unsigned、const、volatile等时,常会看到称其是modifier和qualifier,那么这两个“术语”意思是否一样呢?

浅析

  • 一般语言上:

先看一般的语言(泛指人类语言文字,如英语):
在语言分析上正式地讲,这两个词是有区别的。是这样的顺序,Modifiers-Heads-Qualifiers,即head之前叫modifier、之后叫qualifier。参见http://www.grammatics.com/iel/notes/07grammar4.htm

但是实际应用时,多数情况下并不把两者作严格地区别。经常是混用,不去过多地加以区分。参见http://en.wikipedia.org/wiki/Grammatical_modifier

  • 再回到程序语言上:
    打开C99标准的PDF文档,
type-qualifier:  
  const  
  restrict  
  volatile  
(见附录A.2.2 Declarations)  
(另一种简洁说法:A qualifier is either of "const" or "volatile" (often referred to as a "cv-qualifier").) 

type-specifier:  
  void  
  char  
  short  
  int  
  long  
  float  
  double  
  signed  
  unsigned  
  _Bool  
  _Complex  
  struct-or-union-specifier ∗  
  enum-specifier  
  typedef-name  
(见附录A.2.2 Declarations)  

而C99的PDF中提到modifier词汇的是length modifier之类的说法,并没有上述意义的提法。
因此我猜测在一些C语言的文章中,某些作者可能从日常普通词汇字面上理解modifier这个单词,误把它代替qualifier的意思来使用了。

结论:

  1. 因此,准确地讲,C语言中,起限定和修饰作用的意思的专门术语应该是qualifierspecifier,参见上面提到C99的附录。
  2. 但是,日常阅读某些关于C的文章时不必过分地书呆子气,如果遇到modifier和qualifier混用的情况,在可以理解意思的情况下,若无必要则两者可以不作区分(领会精神:D),都看待成:起限定作用就可以了。
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值