この種のコードをCで書くには??
public static Encoding GetEncoding (
int codepage
)
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 概念をサポートしている場合そしてポリモーフィズム。
C には正式なメソッドはなく、static
修飾子は別の意味を持ちます。アクセス制御修飾子もありません。そう:
Encoding *GetEncoding (int codepage) {
}
Java では、戻り値はおそらくオブジェクト参照になるため、C では*pointer
.
C では、アクセス制御はなく、this
. したがってpublic
、static
すでに物事を行う唯一の方法です。
おそらく、ヘッダー (インターフェース) ファイルにプロトタイプを含める必要があります。
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", /* ... */ },
/* ... */
};
楽しんでください!