ヘッダーのみの C「ライブラリ」を見ています: https://github.com/zserge/jsmn/blob/master/jsmn.h
私が理解できる限り、このコードは .c ファイルに含まれるすべてのオブジェクト ファイルにコンパイルされjsmn.h、スペースが無駄になります。
(ファイルの関数定義は 内#ifndef JSMN_HEADERにあるため、JSMN_HEADER を定義することで、これを「従来の」ヘッダー ファイルとして使用できます。)
- 「トラディショナル」
.cと.hペアで書かれていないのはなぜですか? - リンカは、オブジェクト ファイル間で関数の同一定義を重複排除するのに十分賢いですか? 「重複シンボル」エラーが発生すると予想していました。
- コードをヘッダーに配置すると、C でどのような利点が得られますか? (C++ ではありません。)
#define JSMN_HEADERインポートする前に使用する場合、関数定義はどこから取得しますか?- ヘッダーのみであることは
jsmn.h巧妙なトリックであり、そこから学ぶことができますか?