如果使用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
我有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.
将FILE_ATTRIBUTE_NORMAL(0x80)和0传递给CreateFile函数有什么区别?
例如,请参阅
没有人打扰为Dispose返回的对象调用Dispose System.Diagnostics.Process.GetCurrentProcess().它应该被称为吗?请解释原因.
Process Monitor将CreateFile操作的处置选项显示为"Open","OpenIf","Overwrite","OverwriteIf"(可能是其他内容).包含"If"的选项与不包含的选项有何不同?它们对应哪个CreateFile WinAPI函数'dwCreationDisposition'标志?
我们有一个字符串.
ABAEABABEABE
现在我们必须检查是否存在一个子字符串,接下来是另一个子字符串,它与第一个子字符串完全相同.
在这个例子中:ABAEAB ABE ABE
ABE之后是ABE,它是两个相同的子串.
在这个例子中:
AAB
它只是A,因为A后跟另一个A.
在这个例子中:
ABCDEFGHIJKLMNO
没有这样的子串,所以答案是NO.
我只设法找到一个运行在O(n ^ 2)的算法.这是哈希及其前缀.然后,对于每个字母,我们简单地展开并检查以该字母结尾的所有单词.有n个字母.我们需要扩展它n次.所以它是O(n ^ 2).我相信应该有一个针对这个问题的O(n log n)算法.
有没有人有更好的主意?
此代码打印-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)
我想检测出该值超出预期范围。是否有可能以某种方式完成?
我使用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选项.我该如何处理这类案件?
我想在Visual Studio 2012中自动将包含保护插入到新创建的头文件中.是否有任何预定义的代码段用于此目的?
编辑:我知道#pragma曾经和编译器的广泛支持.但是我们的编码风格迫使我使用包含警卫.
是否可以在Process Monitor中查看给定进程的文件访问事件中的托管堆栈跟踪?如果没有,是否有另一种方法可以完成这样的任务?
c++ ×5
.net ×3
c# ×2
sysinternals ×2
winapi ×2
windows ×2
algorithm ×1
app-config ×1
boost ×1
compiler-bug ×1
debugging ×1
file-io ×1
hash ×1
idisposable ×1
json ×1
logging ×1
new-operator ×1
string ×1
substring ×1
visual-c++ ×1