4.3 NULバイトの使用

デフォルトでは、gperfの生成コードは、Cで通常使われるゼロ終端文字列を扱います。そのため、入力ファイルのキーワードにはNULバイトを含められません。また、hashまたはin_word_setに渡すstr引数は、NUL終端され、長さがちょうどlenでなければなりません。

‘-c’オプション、または同じ働きをする‘%compare-strncmp’宣言を使う場合、str引数にNUL終端は不要です。gperfの生成コードは、strから始まる最初のlenバイトだけにアクセスし、len+1バイトにはアクセスしません。ただし、入力ファイルのキーワードには、引き続きNULバイトを含められません。

‘-l’オプション、または同じ働きをする‘%compare-lengths’宣言を使う場合、ハッシュテーブルはバイナリ比較を行います。入力ファイルのキーワードにNULバイトを含めることができ、文字列構文では\000または\x00と記述します。gperfの生成コードは、NULをほかのバイトと同様に扱います。また、この場合、‘-c’オプション、または同じ働きをする‘%compare-strncmp’宣言は無視されます。