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";
}
由於相同的錯誤,這不起作用。出於某種原因,編譯器沒有定義va_start,因爲它應該是很奇怪的。 – user2835725
適用於Visual Studio 2015 Pro Update 3,適用於Windows 10本地,以及Mageia 5 Linux上的VC_Linux擴展(1.0.5)和GCC 4.9.2。 Windows生成建議我使用'vsprintf_s',否則完全相同的代碼和結果。默認項目類型和標準庫。建議您共享編譯器輸出,以便我們可以看到錯誤消息。 – stanthomas
只是一個想法;在Linux上,GCC將'va_start'映射到頭文件'stdarg.h'中的'__builtin_va_start'。但有些情況下,這可能不會發生。這些適用於你的情況嗎?你使用了哪些編譯器和調試工具,以及在哪些系統上運行它們? – stanthomas