Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候是';标识符';a';名称';在C++;? C++中的“标识符”何时命名为“名称”?我读到的大多是术语“名称”被过度使用,而不是“标识符”,如示例中所示: struct S { int i }; S thing1;_C++_C_Naming Conventions - Fatal编程技术网

什么时候是';标识符';a';名称';在C++;? C++中的“标识符”何时命名为“名称”?我读到的大多是术语“名称”被过度使用,而不是“标识符”,如示例中所示: struct S { int i }; S thing1;

什么时候是';标识符';a';名称';在C++;? C++中的“标识符”何时命名为“名称”?我读到的大多是术语“名称”被过度使用,而不是“标识符”,如示例中所示: struct S { int i }; S thing1;,c++,c,naming-conventions,C++,C,Naming Conventions,在这种情况下,thing1是名称还是标识符?或者术语“标识符”和“名称”是类似的?在C中,在引用对象时,是否使用“名称”一词?C++中的“/p>< p>,术语标识符只是一个数字、字母和 ,而不是从数字开始。这样一个标识符可以出现在任何地方,并且不需要识别任何东西,尽管它的名称(没有双关语) 术语名称将某种意义与某种语法结构联系起来。C++规范说,以下语法结构之一是名称,如果它表示实体(对象、类、模板等)或标签(在这里可以跳转到“代码> Goto < /Cord>”) 标识符 模板id(iden

在这种情况下,
thing1
是名称还是标识符?或者术语“标识符”和“名称”是类似的?在C中,在引用对象时,是否使用“名称”一词?C++中的“/p>< p>,术语标识符只是一个数字、字母和<代码> <代码>,而不是从数字开始。这样一个标识符可以出现在任何地方,并且不需要识别任何东西,尽管它的名称(没有双关语)

术语名称将某种意义与某种语法结构联系起来。C++规范说,以下语法结构之一是名称,如果它表示实体(对象、类、模板等)或标签(在这里可以跳转到“代码> Goto < /Cord>”)

  • 标识符
  • 模板id(
    identifier
    operator function id
    literal operator id
    ,如
    foo
  • 转换函数id(
    运算符类型
    ,如
    运算符int
  • 操作员功能id(
    operator@
    ,如
    operator+
  • 文字运算符id(
    operator”标识符
    ,如
    operator”“\u-foo
对于这些结构中的每一个,当一个名称与另一个名称相同时,规则的定义都不同:对于标识符,两个名称相同,但序列相同(这只是词汇比较)。对于表单转换函数id的名称,如果使用的类型是相同的类型,则它们是相同的(因此这是一个语义比较)


正如您在literal操作符id的示例中所看到的,非终端标识符可以出现在语法中不是名称的地方。所以不是每个标识符都是名称,也不是每个名称都是标识符。在模板id的示例中,我们使用嵌套的名称。
前面的结构分别是名称,因为它们表示声明的模板

非常简洁和最准确地描述了这一区别。