如何用 C 编写这种代码?
public static Encoding GetEncoding (
int codepage
)
C 中没有 public。默认情况下,函数具有外部链接,除非您明确将它们标记为静态。在使用它时,最好让一个原型对你的函数可见(可能在头文件中),以避免调用者和现实之间的期望不匹配:-)
例如,以下将是有效的 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", /* ... */ },
/* ... */
};
玩得开心啊!