小编vkr*_*rzv的帖子

Visual Studio 2019无法正确处理结构的动态数组的聚合初始化

如果使用VC ++ 2017编译,下面的代码将显示垃圾(或零),如果使用GCC或Clang(https://rextester.com/JEV81255)进行编译,则以下代码将显示“ 1122” 。是VC ++的bug还是我在这里遗漏了一些东西?

#include <iostream>

struct Item {
    int id;
    int type;
};

int main()
{
    auto items = new Item[2]
    {
        { 1, 1 },
        { 2, 2 }
    };

    std::cout << items[0].id << items[0].type;
    std::cout << items[1].id << items[1].type;
}
Run Code Online (Sandbox Code Playgroud)

同时,如果元素属于原始类型(例如int),则也可以使用。

c++ new-operator visual-c++ compiler-bug aggregate-initialization

26
推荐指数
1
解决办法
354
查看次数

通过app.config更改跟踪开关级别

我有app配置其跟踪源如下:

        var traceSource = new TraceSource("MyTraceSource");
        traceSource.Switch = new SourceSwitch("MyTraceSwitch") { **Level = SourceLevels.Information** };

        var traceListener = new TextWriterTraceListener(logFilePath);
        traceListener.TraceOutputOptions = TraceOptions.DateTime;

        traceSource.Listeners.Clear();
        traceSource.Listeners.Add(traceListener);

        Trace.AutoFlush = true;
Run Code Online (Sandbox Code Playgroud)

应用程序始终使用此跟踪源来跟踪事件.请注意,SourceLevels.Information在跟踪开关中是硬编码的.现在我需要将跟踪开关级别更改为Verbose.是否可以通过app.config文件完成?我尝试了很多xml-configs但是失败了.注意我无法仅更改源代码app.config.

.net c# logging app-config

11
推荐指数
1
解决办法
6823
查看次数

FILE_ATTRIBUTE_NORMAL和0有什么区别?

FILE_ATTRIBUTE_NORMAL(0x80)和0传递给CreateFile函数有什么区别?

c++ windows file-io winapi

10
推荐指数
1
解决办法
2859
查看次数

应该调用Dispose for Process.GetCurrentProcess()吗?

例如,请参阅

如何获取当前的ProcessID?

没有人打扰为Dispose返回的对象调用Dispose System.Diagnostics.Process.GetCurrentProcess().它应该被称为吗?请解释原因.

.net c# idisposable

10
推荐指数
1
解决办法
1362
查看次数

ProcMon和CreateFile处理选项之间的对应关系

Process Monitor将CreateFile操作的处置选项显示为"Open","OpenIf","Overwrite","OverwriteIf"(可能是其他内容).包含"If"的选项与不包含的选项有何不同?它们对应哪个CreateFile WinAPI函数'dwCreationDisposition'标志?

windows winapi sysinternals

9
推荐指数
2
解决办法
3371
查看次数

找出是否存在两个相同的子串,一个接一个

我们有一个字符串.

ABAEABABEABE

现在我们必须检查是否存在一个子字符串,接下来是另一个子字符串,它与第一个子字符串完全相同.

在这个例子中:ABAEAB ABE ABE
ABE之后是ABE,它是两个相同的子串.

在这个例子中:

AAB

它只是A,因为A后跟另一个A.

在这个例子中:
ABCDEFGHIJKLMNO
没有这样的子串,所以答案是NO.


我只设法找到一个运行在O(n ^ 2)的算法.这是哈希及其前缀.然后,对于每个字母,我们简单地展开并检查以该字母结尾的所有单词.有n个字母.我们需要扩展它n次.所以它是O(n ^ 2).我相信应该有一个针对这个问题的O(n log n)算法.

有没有人有更好的主意?

string algorithm hash substring

9
推荐指数
1
解决办法
412
查看次数

使用“现代C ++的JSON”库检测到整数不适合指定的类型吗?

此代码打印-1

#include <iostream>
#include <nlohmann/json.hpp>

int main()
{
    auto jsonText = "{ \"val\" : 4294967295 }";
    auto json = nlohmann::json::parse(jsonText);
    std::cout << json.at("val").get<int>() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我想检测出该值超出预期范围。是否有可能以某种方式完成?

c++ json nlohmann-json

9
推荐指数
2
解决办法
122
查看次数

如何使用Boost.program_options检测拼写错误?

我使用boost.program_options库.考虑这个简化的案例.

po::options_description desc("Usage");
desc.add_options()
("uninstall,u", "uninstall program")
("custom,c", po::wvalue<std::wstring>(), "specify custom action");

po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
Run Code Online (Sandbox Code Playgroud)

我想在这样的命令行上产生错误:

testprog.exe -u c- action1
Run Code Online (Sandbox Code Playgroud)

注意,用户输入错误"c-"而不是"-c".但解析器将此理解为单个-u选项.我该如何处理这类案件?

c++ boost boost-program-options

7
推荐指数
1
解决办法
556
查看次数

在Visual Studio中插入快速的方法包括guard

我想在Visual Studio 2012中自动将包含保护插入到新创建的头文件中.是否有任何预定义的代码段用于此目的?

编辑:我知道#pragma曾经和编译器的广泛支持.但是我们的编码风格迫使我使用包含警卫.

c++ visual-studio visual-studio-2012

7
推荐指数
2
解决办法
7874
查看次数

进程监视器中的托管堆栈

是否可以在Process Monitor中查看给定进程的文件访问事件中的托管堆栈跟踪?如果没有,是否有另一种方法可以完成这样的任务?

.net debugging sysinternals

7
推荐指数
1
解决办法
820
查看次数