-3

この種のコードをCで書くには??

public static Encoding GetEncoding (
    int codepage
)
4

3 に答える 3

1

C には public はありません。明示的に static とマークしない限り、関数にはデフォルトで外部リンケージがあります。呼び出し元と実際の間の期待の不一致を避けるために、関数を使用するときに(おそらくヘッダーファイルで)関数のプロトタイプを表示することをお勧めします:-)

たとえば、次は有効な C です。

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

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

C++ (または他の OO 言語) コードを C に変換することが目的の場合は、ここのような方法がありますが、気弱な人向けではありません :-) 特に、継承などの適切な OO 概念をサポートしている場合そしてポリモーフィズム。

于 2012-05-07T06:36:38.670 に答える
1

C には正式なメソッドはなく、static修飾子は別の意味を持ちます。アクセス制御修飾子もありません。そう:

Encoding *GetEncoding (int codepage) {

}   

Java では、戻り値はおそらくオブジェクト参照になるため、C では*pointer.

于 2012-05-07T06:36:48.283 に答える
0

C では、アクセス制御はなく、this. したがってpublicstaticすでに物事を行う唯一の方法です。

おそらく、ヘッダー (インターフェース) ファイルにプロトタイプを含める必要があります。

extern Encoding *GetEncoding ( int codepage );

ソース(実装)ファイルには

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

ヘッダー ファイルは次のように定義することもできますEncoding

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

ソースファイルはエンコーディングを定義するかもしれません

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

楽しんでください!

于 2012-05-07T06:45:34.533 に答える