如何在C ??
中编写这种代码public static Encoding GetEncoding (
int codepage
)
答案 0 :(得分:1)
C中没有公共。除非您明确地将它们标记为静态,否则函数默认具有外部链接。在使用它时,为您的函数(可能在头文件中)显示原型是个好主意,以避免调用者和现实之间的不匹配期望: - )
例如,以下内容将是有效的C:
encoding.h:
typedef void * Encoding;
Encoding getEncoding (int);
encoding.c:
#include "encoding.h"
Encoding getEncoding (int codePage) {
return 0;
}
如果您的目的是将C ++(或其他OO语言)代码转换为C,那么有一些方法可以实现,例如here,但它不适合胆小的人:-)特别是如果你是支持适当的OO概念,如继承和多态。
答案 1 :(得分:1)
C中没有正式方法,static
修饰符意味着其他方法。也没有访问控制修饰符。所以:
Encoding *GetEncoding (int codepage) {
}
在java中,返回值可能是对象引用,因此在C中你将使用*pointer
。
答案 2 :(得分: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", /* ... */ },
/* ... */
};
有啊,好玩!