1

ヘッダーのみの 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巧妙なトリックであり、そこから学ぶことができますか?
4

1 に答える 1