-3

如何用 C 编写这种代码?

public static Encoding GetEncoding (
    int codepage
)
4

3 回答 3

1

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 概念,如继承和多态性。

于 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. 所以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", /* ... */ },
    /* ... */
};

玩得开心啊!

于 2012-05-07T06:45:34.533 回答