2012-05-07 6 views
-3

Cのこの種のコードを書く方法?Cのコードの平和 - 静的な問題

public static Encoding GetEncoding (
    int codepage 
) 
+2

Cでオブジェクトを持つことはできませんが、データ 'struct'にポインタを持つことができ、すべてが公開されています。 BTWはすべて効果的に 'static'ですC++について考えていますか? JNIを使​​用しようとしていますか? –

+2

コードにエンドウ豆があるようにしましょう! – sbi

答えて

0

Cでは、アクセス制御はありません。thisはありません。そのため、すでにpublicstaticが唯一の方法です。

はおそらくもEncodingを定義できます

Encoding *GetEncoding (int codepage) { 
    return & masterEncodingList[ codepage ]; /* example implementation */ 
} 

ヘッダファイルを持っている必要があり、ヘッダ(インタフェース)プロトタイプ

extern Encoding *GetEncoding (int codepage); 

とソース(実装)ファイルを格納するファイルをしたいです:

struct Encoding { 
    const char *name; 
    /* other fields */ 
}; 

とソースファイルがエンコード

Encoding masterEncodingList[] = { 
    { "Swahili", /* other fields */ }, 
    { "Portuguese", /* ... */ }, 
    /* ... */ 
}; 

を定義するかもしれませんが、ああ、お楽しみに!

1

Cにはパブリックはありません。関数には、静的に明示的にマークしない限り、デフォルトで外部リンケージがあります。

たとえば、次のようなものが有効です。C:あなたの関数(おそらくヘッダーファイル)にプロトタイプを表示して、呼び出し元と現実の間の不一致の期待を避けるようにしてください。 :

encoding.h: 
    typedef void * Encoding; 
    Encoding getEncoding (int); 

encoding.c: 
    #include "encoding.h" 
    Encoding getEncoding (int codePage) { 
     return 0; 
    } 

は「あなたの意図は、CにC++(または他のオブジェクト指向言語)コードを変換する場合には、そのようhereとしてそれを行うための方法がありますが、あなたならば、それは特に:-)心臓の弱いためではありません継承と多型のような適切なオブジェクト指向の概念をサポートしています。

+0

真ですが、CからJavaの「public」キーワードに最も近いのは、ヘッダファイルに関数を宣言していることです。 –

1

Cには正式なメソッドはありません。static修飾子は何かを意味します。アクセス制御修飾子もありません。だから、:Cであなたが*pointerを使用するようにJavaで

Encoding *GetEncoding (int codepage) { 

} 

、戻り値は、おそらく、オブジェクト参照になります。

関連する問題