我正在爲C編寫一個Unicode庫作爲個人練習。如果沒有實際的代碼,我有這樣的:自動傳遞參數在C參考
typedef struct string {
unsigned long length;
unsigned *data;
} string;
// really simple stuff
string *upush(string *s, unsigned c) { ... }
// UTF-8 conversion
string *ctou(char *old) { ... }
char *utoc(string *old) { ... }
upush
推動全Unicode代碼點c
到的s
末,根據需要重新分配。
我可以使用類這樣的,例如:
string a;
upush(&a, 0x44);
puts(utoc(&a));
而不必使用&
到參考傳遞給函數的,有一種方法可以寫出這樣我可以撥打:
string a;
upush(a, 0x44);
puts(utoc(a));
或者,你認爲這只是最好的typedef string
爲struct string
指針,而不是結構本身,始終與struct string
指針處理?
解決方法?由於Dummy00001,這是我現在的圖書館的一般輪廓:
typedef struct string {
unsigned long length;
unsigned *data;
} string;
// really simple stuff
string *upush(string *s, unsigned c) { ... }
// UTF-8 conversions
string ctou(char *old) { ... }
char *utoc(string old) { ... }
下面是一些例子:++
string a = ctou("Hello, world");
upush(&a, '!');
puts(utoc(a));
我也學習,感謝Doches,在C(這是我會寫這個庫中的包裝),你可以寫原型這樣做隱含傳遞按引用:
string *upush(string &s, unsigned c);
對於那些有興趣誰,這是我不斷取得的進展:http://delan.ath.cx/ulib
好運氣的運動,unicode是非常困難的得到正確。 – 2010-09-24 09:46:25
助手宏怎麼樣? #define upush(a,b)upush(&a,b) – Nyan 2010-09-24 10:04:52
呃,這似乎有點'hackish'。 – 2010-09-24 10:11:13