3

C ++ 11標準16.2.5では:

実装は、1つ以上の非数字または数字(2.11)とそれに続くピリオド(。)および単一の非数字で構成されるシーケンスに固有のマッピングを提供するものとします。最初の文字は数字であってはなりません。実装はアルファベット順の区別を無視する場合があります。

私はこれの文脈や意味をまったく理解していませんか?

「独自のマッピングを提供する」とはどういう意味ですか?何から何へのマッピング?そして、何とは対照的にユニークですか?そして何のシーケンス?

周囲の段落からは完全に前後関係がないようです。

4

2 に答える 2

3

通常、#includeディレクティブで指定するのはファイル名です。これが言っているのは、ファイル名である必要はないということです。「fromwhat」は、ディレクティブ内の文字(h-char-sequenceまたは)のシーケンスです。q-char-sequenceこれは、同じ種類のデータの(多かれ少なかれ恣意的な)ソースにマップできます。たとえば、実装がヘッダーをある種のデータベースに格納したい場合、それらをデータベースのレコードにマップすることがあります。

「何まで」の部分に関しては、意図的にあいまいです。通常の実装ではファイル名を使用しますが、ヘッダーを含めると正しいタイプの結果が生成される限り、ほとんど何でもかまいません。上記のデータベースレコードは可能性の1つですが、プリコンパイル済みヘッダーなどを許可したり、標準ヘッダーの「知識」をコンパイラ自体に組み込んだりすることを目的としているため、標準ヘッダーを含めると、コンパイラにフラグを設定して通知するだけで済みます。そのヘッダーの内容に注意してください。

于 2013-02-22T00:18:31.740 に答える
2

私はそれが非sequiturであるとは思いません、「シーケンス」はとペア、またはペアの間のq-char-sequenceまたはh-char-sequenceを指します。<>"

言い回しは、6.4.7に次の追加の言い回しがあるC標準から直接来ています(わずかに変更されています)。

両方の形式のヘッダー名のシーケンスは、6.10.2で指定されているように、実装定義の方法でヘッダーまたは外部ソースファイル名にマップされます。

後の言い回しは、その文脈ではもう少し意味があります。

実装は、その形式のインクルードファイルとヘッダーをサポートするためだけに必要であることを意味すると思います。#include <vector>実装が他の形式をサポートしないと言っていないので、それは明らかに機能しないという意味ではありません。また、ヘッダーが適切に動作することを要求する他の言い回しがあります

于 2013-02-22T00:52:39.503 に答える