我尝试了很多解决方案,但都不奏效。
实际上,我已经像这样设置了我的项目的调试器,我能够使用OutputDebugStringA(“Test”)在控制台中编写代码
但此函数不接受多个参数。
如何打印这样的内容:
(“测试:%d”,123)
?
我终于找到了这个解决方案(这里和这里):
调试。cpp:
#pragma once
#include "pch.h"
#define BUFFER_LENGTH 1024
//char* to wchar_t*
const wchar_t *GetWC(const char *c)
{
const size_t cSize = strlen(c) + 1;
wchar_t* wc = new wchar_t[cSize];
mbstowcs(wc, c, cSize);
return wc;
}
void Debug::Log(const char *format, ...)
{
char buffer[BUFFER_LENGTH];
va_list args;
va_start(args, format);
vsnprintf(buffer, BUFFER_LENGTH, format, args);
va_end(args);
buffer[BUFFER_LENGTH - 1] = '\0'; //prevent buffer overflow
OutputDebugString(GetWC(buffer));
}
调试。h:
class Debug{
public:
static void Log(const char *format, ...);
};
我们可以像printf
函数那样使用它:
Debug::Log("Test : %d", 123);
我在用于Windows 8的Pluralsight上的一次C培训中发现了这段代码(您只需说TRACE(“Test:%d”,123);
即可使用它):
#pragma once
#include <assert.h>
#define ASSERT assert
#ifdef _DEBUG
inline auto Trace(wchar_t const * format, ...) -> void
{
va_list args;
va_start(args, format);
wchar_t buffer[256];
ASSERT(-1 != _vsnwprintf_s(buffer, _countof(buffer) - 1, format, args));
va_end(args);
OutputDebugString(buffer);
}
#endif
struct Tracer
{
char const * m_filename;
unsigned m_line;
Tracer(char const * filename, unsigned const line) :
m_filename{ filename },
m_line{ line }
{
}
template <typename... Args>
auto operator()(wchar_t const * format, Args... args) const -> void
{
wchar_t buffer[256];
auto count = swprintf_s(buffer, L"%S(%d): ", m_filename, m_line);
ASSERT(-1 != count);
ASSERT(-1 != _snwprintf_s(buffer + count, _countof(buffer) - count, _countof(buffer) - count - 1, format, args...));
OutputDebugString(buffer);
}
};
#ifdef _DEBUG
#define TRACE Tracer(__FILE__, __LINE__)
#else
#define TRACE __noop
#endif
博格的答案是在正确的轨道上,但我不喜欢GetWC中的分配,它看起来像内存泄漏,它使用不安全的函数,试试这个:
void Debug::Log(const wchar_t *format, ...)
{
wchar_t buffer[BUFFER_LENGTH];
va_list args;
va_start(args, format);
_vsnwprintf_s(buffer, BUFFER_LENGTH, _TRUNCATE, format, args);
va_end(args);
buffer[BUFFER_LENGTH - 1] = '\0'; //prevent buffer overflow
OutputDebugString(buffer);
}
用法如下:
Debug::Log(L"Hello %S\n", "sailor");
我必须处理不同的项目,其中一个是使用Java 8,另一个是Java 17。上周我在使用Java 17,现在我正在尝试将我的配置还原为使用Java 8。 这些是我的配置 我也删除了~/. m2内的所有文件夹。 我在IntelliJ中的配置是: 项目结构 SDK:OpenJDK 1.8 语言级别:SDK默认 项目结构 模块SDK:项目SDK(OpenJDK 1.8) 首选项|构建、执行、部署|编译器|
我错过了什么? 编辑: 看来Gradle也不接我的测试。当我转到时,它指示0 test。 在IntelliJ中,我打开Gradle窗口,点击“刷新所有Gradle项目”按钮,刷新库。 然后在我的测试类中,我在类声明的顶部添加了。 当我执行时,结果可以在下面找到:
当我想运行react-native run-android命令时,我会看到 运行jetifier将库迁移到AndroidX的信息。您可以使用“--no-jetifier”标志禁用它。Jetifier找到了998个要转发的文件。使用12名工作人员...信息JS服务器已在运行。安装应用程序得信息... 失败:生成失败,出现异常。 > 其中:构建文件“C:\tmpprojets\beetv-app\no
我向Eclipse导入了一个新项目。这是一个maven项目。我没有任何编译器错误。我向eclipse添加了一个新的tomcat服务器,我还在项目运行时添加了该服务器。一切都应该没事的。但当我尝试运行一个项目时,我会得到运行时错误。 pro 09,2016 12:30:40 PM org.apache.Catalina.core.ContainerBase StartInterral严重:启动jav
我试图运行一个基本的Kotlin主文件,但问题是我没有任何可用的运行/调试配置。 我的main.kt文件位于src>main下,是一个非常简单的Helloworld程序。见下图。当我输入Add configuration>kotlin并在Main Class中键入MainKt时,我得到警告:Class MainKt not found。在以前的项目中,MainKt是默认的,我不必手动添加配置。还有
unsupportedClassVersionError:com/android/build/gradle/appplugin:Unsupported major.minor版本52.0 我也试着回到JDK版本7,因为它在google站点上说JDK 8对Mac来说是不稳定的。还是有同样的错误。