2016-12-01 17 views
0

CプロジェクトをC++に変換する作業ですが、このコードは通常のC++プロジェクトで動作しますが、テストを高速化するためにリモートデバッグを開始すると、 va_startマクロシンボル '__builtin_va_start'を解決できません。Visual StudioのLinuxリモートデバッグ

#include "Utilities.h" 
#include <cstdarg> 
#include <stdarg.h> 
void Utilities::PrintLine(const char* text, ...) 
    { 
     char buffer[100]; 
     va_list args;   // resolved just fine 
     va_start(text, args); // cannot resolve 
     vsprintf(buffer, text, args); 
     va_end(args);   // cannot resolve 
     std::cout << buffer << "\n"; 
    } 

答えて

1

私はva_startの使用を認識していません。以下は動作します:

#include <iostream> 
#include <cstdarg> 

void PrintLine(const char* fmt, ...) 
{ 
    char buffer[100]; 
    va_list args; 
    va_start(args, fmt); 
    vsprintf(buffer, fmt, args); 
    va_end(args); 
    std::cout << buffer << std::endl; 
} 

PrintLine ("var arg %d %d %d %d", 1, 2, 3, 4); 
+0

これは同じエラーのために動作しません。なんらかの理由でコンパイラにはva_startが定義されていないので、これは奇妙です。 – user2835725

+0

Visual Studio 2015 Pro Update 3では、Windows 10でネイティブに、GCC 4.9.2でMageia 5 LinuxのVC_Linux拡張機能(1.0.5)経由でうまく動作します。 Windowsビルドでは、私は 'vsprintf_s'を使うことを提案しましたが、そうでなければまったく同じコードと結果でした。デフォルトのプロジェクトタイプと標準ライブラリ。エラーメッセージが表示されるように、コンパイラの出力を共有することをお勧めします。 – stanthomas

+0

ちょっと考えました。 Linuxでは、GCCは 'stdarg.h 'ヘッダの' va_start'を '__builtin_va_start'にマッピングします。しかし、これは起こり得ない状況があります。あなたの場合、これらのいずれかが適用されますか?どんなコンパイラツールとデバッグツールを使用していて、どのシステムでそれらを実行していますか? – stanthomas

関連する問題