[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:7632] 現在の配布バイナリのコンパイラは?
- X-ml-count: 7641
- Subject: Re: [MD:7632] 現在の配布バイナリのコンパイラは?
- From: Shun-ichi GOTO <shunichi.goto@xxxxxxxxx>
- Date: Sat, 12 Sep 2009 13:29:49 +0900
2009年9月12日11:11 M.Fujii <boochang@xxxxxxxxxxxx>:
> 藤井です。書き忘れたので補足です。
>
> __argc, __argv を使うとコマンドライン文字列のパースが emacsclientw の仕
> 様に沿っているかが問題となります。__argv などを使うよう適用するのは
> 比較的楽だと思いますが、この辺の検証をやるのは大変かもしれません。
ほんとだ、__argc, __argvは使えますね。しらなかった。
msvc と mingwで以下のコード(chkarg.c)をコンパイルしてみて軽く試してみた。
解釈の仕方はおんなじに見える。
[コンパイル]
cl chkarg.c /Fechkarg-msvc.exe /link /subsystem:windows
or
gcc -o chkarg-mingw.exe chkarg.c -mwindows -lkernel32
[起動コマンドライン(共通)]
chkarg '(\a "b c")' "(\"d\" \"c:\home\gotoh\")"
[mingwの場合の出力結果]
argc=4
argv[0] = 'chkarg-mingw'
argv[1] = ''(\a'
argv[2] = 'b c)''
argv[3] = '("d" "c:\home\gotoh")'
[msvcの場合の出力結果]
in WinMain
'(\a "b c")' "(\"d\" \"c:\home\gotoh\")"
argc=4
argv[0] = 'chkarg-msvc'
argv[1] = ''(\a'
argv[2] = 'b c)''
argv[3] = '("d" "c:\home\gotoh")'
----------[chkarg.c]----------
#ifndef __GNUC__
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPervInstance,
LPSTR lpszCmdLine, int nCmdShow)
{
OutputDebugString("abc\n");
OutputDebugString(lpszCmdLine);
return main(__argc, __argv);
}
#else
#endif
int
main(int argc, char **argv)
{
char buf[80];
int i;
sprintf(buf, "argc=%d\n", argc);
OutputDebugString(buf);
for (i=0; i<argc; i++) {
sprintf(buf, "argv[%d] = '%s'\n", i, argv[i]);
OutputDebugString(buf);
}
}
-
Shun-ichi GOTO