Visual Studio では compile option 「char 型を既定で unsigned (/J)」によって変わりますけど、/J を指定していない場合、char と signed char は同じだと思っていました。ところが。。。
signed char string[] = "あいうえお";
char * pString = string;
この結果は
error C2440: '初期化中' : 'signed char [11]' から 'char *' に変換できません。
上記 error で失敗します。
下記はあまりにも当然ですけど、成功します。
char string[] = "あいうえお";
char * pString = string;
上記は Visual Studio 2008 Professional Edition SP1 で確認しています。
Compile option に /J をつけていない場合、char == signed char (typedef char signed char な感じ) だと思っていたけど、違うみたいですね。なんの目的があるんでしょう?