2016-10-18 4 views
0

私はCに新たなんだと最近、私は静的ボイド*とちょっと混乱しています(仕事関連)zeromq学んでいるとき:Cのstatic void *の意味は何ですか?

... 
static void * 
worker_task(void *args) 
{ 
... 

は、その行の正確な意味は何ですか?私は答えを探してみました、私はそれがポインタだと思ったが、ポインタは通常、 '*'の後に変数名を持っているということを考えるとちょっと奇妙です。

ありがとう、私はこれは一見「初心者」の質問に尋ねるのは無礼ではないと思います。 :)

+2

2つの異なる行の分離は効果がないことに注意してください。この例は 'static void * worker_task(void * args)'と同じ行です。 – owacoder

+0

ああ、私はそれが2つの別々の行だと思った!ご回答どうもありがとうございました。 – raharaha

答えて

2

worker_taskvoid *を返します。

関数定義の前のキーワードは、現在のコンパイル単位、つまり特定のオブジェクトファイル(通常は複数のインクルードファイルを含む1つのソースファイルから作成されたもの)の内部でしか表示できないことを意味します。関数は、この関数を含むオブジェクトファイルにリンクされている可能性のある他のオブジェクトファイルからは表示されません。

+0

答えはちょっとうんざりだと思います。関数がヘッダーファイルに現れた場合、そのヘッダーファイルを含むすべての人に "可視"になりますが、すべての翻訳単位で別個のエンティティになります。ポイントは、 'static'は関数名に* internal linkage *を持たせることです。 –

関連する問題