4
PUBLIC void main

これは、Minixソースのkernel.cからのものです。この場合のPUBLICの意味は何ですか?

4

4 に答える 4

9

おそらく次のように定義されています。

#define PUBLIC extern
#define PRIVATE static

おっと、タネンバウムの私のコピーを見てください。これは次のように定義されます。

#define PUBLIC

つまり、何もないとして。それは単に「自己文書化」のほんの少しです。PRIVATEは私が最初に言ったように定義されています。これらはMinixソースファイルにありますconst.h

于 2011-05-16T10:42:44.687 に答える
3

タネンバウムからの引用MinixBookオペレーティングシステムの設計と実装第3版ページ140段落3

PRIVATEは、staticの同義語として定義されています。宣言されているファイルの外部で参照されていないプロシージャとデータは、宣言されているファイルの外部に名前が表示されないように、常にPRIVATEとして宣言されます。原則として、すべての変数とプロシージャは、可能であればローカルスコープで宣言する必要があります。PUBLICはヌル文字列として定義されます。kernel / proc.cの例は、これを明確にするのに役立つ場合があります。宣言

PUBLIC void lock_dequeue(rp)

Cプリプロセッサから次のように出てきます

void lock_dequeue(rp)

staticグローバル変数にはファイルスコープがあります。したがって、グローバル変数を定義するか、関数を静的にすると、それらはそのファイル内でのみ表示されます。つまり、マルチファイル環境では、そのファイル内にあるコード内のファイルにのみアクセスできます。

externグローバルはファイルの外部から表示/アクセスできます。関数定義externの場合、デフォルトでファイルのスコープ外から表示されるため、オプションです。

これらのことをハッシュ定義することは、実際に何が意図されているかをよりよく解釈して理解するための抽象化レイヤーを追加することにPRIVATE他なりません。PUBLICOOP設計の場合と同様に、プライベートとパブリックには解釈があり、同じ名前を追加すると、それらがどのプロパティを持っているかが示されます。

于 2011-05-16T14:40:40.563 に答える
1

私はそれがプリプロセッサによってもっとCのようなもの(または空の文字列)に置き換えられると思います。

で検索してみて#defineくださいPUBLIC

于 2011-05-16T10:45:26.870 に答える
0

PUBLICという単語は、メソッドをコンパイルユニットの「パブリックインターフェイス」の一部としてマークすることを意味します。つまり、現在のソースファイルの外部から呼び出すことができるメソッドです。(これは単なる知識に基づく推測です)。他の人が指摘しているように、PUBLICはほぼ確実に、適切なキーワード/属性のセットに拡張されるプリプロセッサマクロです。

于 2011-05-16T10:47:32.617 に答える