誰か翻訳して下さい

http://pc8.2ch.net/test/read.cgi/tech/1147832791/888-901

888 :デフォルトの名無しさん :2006/12/05(火) 19:07:50
ソースコード中に直接 AECHAR 文字列を記述したい時って、
ANSI ワイド文字列みたいに


L"なんてろかんてろ"


みたいなことはできないのだろうか。
現状では、


AECHAR szString[10] = { '', '', .... 0} ;


みたいな書き方をしてるんだけども。



889 :デフォルトの名無しさん :2006/12/05(火) 19:49:03(※2)
>>888
プリプロセッサ書けばいいじゃない?


890 :デフォルトの名無しさん :2006/12/05(火) 22:06:09(※1)
>>888
俺は全部 String クラスを作って操作してるな。
内部で AECHAR に変換して使ってる。


どうしてもソース中に書きたいなら、


const char cstr = "なんてろかんてろ\0";
const AECHAR* str = (AECHAR*)cstr;


全角だけならこれでいいんじゃない?



891 :デフォルトの名無しさん :2006/12/05(火) 22:32:09
私はPerlとかで16進のコードに変換して、
AECHAR achar = { 0x.., 0x.., 0x.., 0 };
って感じにコピペしてる。


892 :デフォルトの名無しさん :2006/12/05(火) 23:25:30
#define C2W(c,w) STREXPAND((byte*)c,STRLEN(c),w,sizeof(w))
でいいじゃん


893 :デフォルトの名無しさん :2006/12/06(水) 00:18:47
AECHARをソースに書きたい? 俺は出力最終段でしか使ってないな
APIを生で使うやつ死ねばいいのにー


894 :デフォルトの名無しさん :2006/12/06(水) 00:31:14
なるべく不測のメモリ消費は避けたいじゃない。
システムメッセ的な固定ものは組み込んでおいたほうが。


895 :890:2006/12/06(水) 00:50:54(※1)
そういえば ARM で、


"〜することが可能です"


とか書いてたらアウトだった気がする。能に 0x5C('\\') が含まれてるから。
そういう意味でも文字列を直接書くのは危ないよな。


ちなみに、


"〜することが可能\です"


って書けば ARM でも動いたはずだけど、
エミュのソースと分ける必要が出てくるからめんどい。


あと >>890 の蛇足だけど、半角文字を扱うなら、


const char cstr[] = "n\0u\0l\0l\0\0";
const AECHAR* str = (AECHAR*)cstr; // L"null" が入る


これでいけるはず。
ワイド文字のメモリ配置とか分かってるならこれでいいんでない?


896 :デフォルトの名無しさん :2006/12/06(水) 01:23:53(※2)
>>895
> って書けば ARM でも動いたはずだけど、
> エミュのソースと分ける必要が出てくるからめんどい。
>>889


897 :デフォルトの名無しさん :2006/12/06(水) 01:32:12(※1)
それ、プリプロセッサで分ければいいってこと?


それがめんどいって言ってるんだけどね……。


898 :デフォルトの名無しさん :2006/12/06(水) 01:32:42
おらも>>891でやってるべよ


899 :デフォルトの名無しさん :2006/12/06(水) 03:28:45(※2)
>>897
わからないなら説明してもしょうがないな。
つか、プログラマなら自分でプログラム書いて解決しろよ。


900 :デフォルトの名無しさん :2006/12/06(水) 04:58:42(※1)
>>899
何か良い方法があるなら教えてくんろ。


自前でプリプロセスしろってことだったら
あんたさんがそのツールを Wiki に置いておくれよん。


901 :デフォルトの名無しさん :2006/12/06(水) 15:35:26(※2)
baka ha suruu de

(※1)(890, 895, 897, 900)は自分の発言なんだけど、(※2)(889, 896, 899, 901)の意図がさっぱり分からなかったり。
誰か分かる方教えて下さい(;´Д`)