アプリ版:「スタンプのみでお礼する」機能のリリースについて

visual studio 2005を使用し、C++で作ったクラスをVBで呼び出せるようにするため、C++でラッパクラスを作成中です。

ネイティブコードで可変個の引数を表すには、
Test(PSTR str, ...){
charch[1024];
va_listap;

va_start(ap, str);
wvsprintf( ch, str, ap );
va_end(ap);
      ・
      ・
      ・
}
のようにすればOKだったのですが、マネージコードで可変個の引数を使用するにはどうすれば良いのでしょうか。「ParamArray」というキーワードを使うのでしょうか?

また、ラッパクラスではないクラスの可変個引数を使用しているメソッドで、
「warning C4793: 'vararg' : 関数 'DWORD CTest::Log(PSTR,...)' 用にネイティブ コードの生成が発生します」
というワーニングがでています。これは無視しても大丈夫なのでしょうか?

申し訳ございませんが、分かる方がいましたら回答をお願いします。

A 回答 (1件)

ネイティブコードで生成されるのは仕方の無いことでしょうね。

。。

MSDNにはva_argマクロ系を共通言語ラインタイムで使用する場合
渡す引数を明示的にキャストしろと書いてありました。
http://msdn2.microsoft.com/ja-jp/library/kb57fad …

コンパイルオプションに注意する必要がありそうです。
http://msdn2.microsoft.com/ja-jp/library/ffkc918 …
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。

コンパイルオプションは設定していたのですが、va_argマクロ使用時の、渡す引数のキャストはやっていませんでした。

「ParamArray」を使ってコンパイルしましたが、エラーになってうので、別の方法がないか調べているところです。

お礼日時:2007/10/18 09:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!