我在编译一些可移植代码时碰到了这个gcc.基本上这个奇怪的代码在Visual Studio中编译,这真的让我大吃一惊:
class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
Zebra y;
x = y;
foo(goo());
}
Run Code Online (Sandbox Code Playgroud)
Visual studio让这一个飞.gcc将捕获此作为编译错误.有趣的是,如果你输入def Zebra为int,VC++会抱怨.相当矛盾的行为.思考?
假设我有一个带有构造函数的内存池对象,该构造函数获取指向大块内存ptr和大小为N的指针.如果我做了许多随机分配和各种大小的解除分配,我可以获得内存,使得我无法分配M字节对象在内存中连续存在,即使可能有很多空闲!与此同时,我无法压缩内存,因为这会导致消费者的悬空指针.在这种情况下如何解决碎片问题?
我看过很多例子似乎都解决了这个简单的案例.我要解析的字符串是:
"2012-06-01 16:45:34 EDT"
我试图local_time_input_facet用folloiwng 创建一个:
"%Y-%m-%d %H:%M:%S %Z"
local_date_time始终未设置对象的区域指针.阅读文档令人困惑:
%Z*!全时区名称(仅限输出).将time_facet与ptime一起使用时,将忽略此标志.
"EDT"//东部夏令时
有没有人这样做过?
更新:我已更新代码以更好地说明问题:
using namespace std;
using namespace boost::local_time;
int main()
{
stringstream ss;
// Set up the input datetime format.
local_time_input_facet *input_facet
= new local_time_input_facet("%Y-%m-%d %H:%M:%S %ZP");
ss.imbue(std::locale(ss.getloc(), input_facet));
local_date_time ldt(not_a_date_time),ldt1(not_a_date_time);
// Read a time into ldt
ss.str("2012-06-01 17:45:34 EDT");
ss >> ldt;
ss.str("2012-06-01 17:45:34 CDT");
ss >> ldt1;
std::cerr << (ldt - ldt1).total_seconds() << std::endl;
// Write the time to stdout.
cout << "Full …Run Code Online (Sandbox Code Playgroud) 运行:gcc版本4.2.1(Apple Inc. build 5664)
我创建了一个带有默认预编译头的Apple XCode项目.它似乎非常慢,并且一个简单的主文件与主函数no包括没有代码需要6秒编译,这是我升级到新的SSD驱动器后.我在笔记本电脑上,但我保留升级到工作站可以缓解我的问题.如果我关闭预编译的头,那么主文件将在一秒钟内编译.似乎使用预编译的标头会对所有文件造成惩罚.这种延迟使我想避免编译和试验不好的代码.这是我在预编译头文件中包含的内容:
#pragma once
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <fstream>
#include <functional>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <valarray>
#include <vector>
#include <boost/smart_ptr/scoped_ptr.hpp>
#include <boost/smart_ptr/scoped_array.hpp>
#include <boost/smart_ptr/shared_ptr.hpp>
#include <boost/smart_ptr/shared_array.hpp>
#include <boost/smart_ptr/make_shared.hpp>
#include <boost/smart_ptr/weak_ptr.hpp>
#include <boost/smart_ptr/intrusive_ptr.hpp>
#include <boost/regex.hpp>
#include <boost/thread.hpp>
#include <boost/bind/bind.hpp>
#include <boost/bind/apply.hpp>
#include <boost/bind/protect.hpp> …Run Code Online (Sandbox Code Playgroud) 在我主要工作的linux中,我们使用一种称为CPU隔离的技术,它可以有效地将进程锁定到处理器上,还可以防止处理器运行其他任何东西.我们的内核人员做了一些魔术来处理中断.
在Windows中,我发现最接近的是一个亲和概念,它似乎将进程/线程绑定到处理器.但它不能保证处理器仅运行该进程/线程意味着仍然可以存在上下文切换和其他抖动.
有没有办法在Windows上隔离CPU以确定半确定的运行时间?
我试图在XCode中调试一些Qt容器,我从GDB返回的结果没用:
print l1
$1 = (QSharedPointer<QList<SNAPSHOT> > &) @0x102780650: {
<QtSharedPointer::ExternalRefCount<QList<SNAPSHOT> >> = {
<QtSharedPointer::Basic<QList<SNAPSHOT> >> = {
value = 0x1161e47e0
},
members of QtSharedPointer::ExternalRefCount<QList<SNAPSHOT> >:
d = 0x1161ace00
}, <No data fields>}
Current language: auto; currently c++
(gdb) print strQuery
$2 = {
d = 0x1161e2890
Run Code Online (Sandbox Code Playgroud)
如何从l1(QList)和strQuery(QString)获得一些有用的输出?
我已经尝试过使用这个.gdbinit,它添加了一些像"printq4string"这样的宏,但是这些使用非常痛苦,因为在打印结构时我需要在每个成员变量上手动运行它.
正如文档中明确指出的那样,Qt GUI必须仅从主线程访问.对于具有多个大型和繁忙表的复杂应用程序,这可能是Qt喜欢的所有字体大小文本度量计算的瓶颈.我能想到的唯一选择是使用单独的流程进行多任务处理.这些表目前的速度与您可以获得的速度一样快,自定义模型直接映射到从另一个线程提供的缓存,使用dataChanged()调用最保守的一组更改的单元格.我已经使用vTune进行了概述,70%的应用程序时间现在都在Qt呈现代码中.有什么建议?
是否有一个开放的字典数据库,我至少可以得到一个表格:word | 演讲的一部分?
理想情况下,我也想要反义词和其他词的同义词链接.
我想用简单的C++语法创建一个简单的工厂方法:
void *createObject(const char *str,...)
{
if(!strcmp("X",str))
return new X(...);
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这个的语法.我一直在看模板元编程并使用mpl :: vectors,但我不知道如何传递这种语法.我想尽可能避免使用C va_lists,并采用如上所述的干净语法.
我有这段代码,我一直试图移植.该代码使用WinHTTP实现在Windows上100%正常工作.在IOS 7模拟器上,我正在使用NSURLSession.对于常规HTTPS get/post似乎工作正常.
当我使用"流式"HTTP时,事情开始崩溃.在这种情况下,内容长度是未知的,因为数据是连续流式传输的.
我有一个阻塞同步下面的调用,将等待当前请求完成.当我使用第一个命令时,同步循环将在命中代理后退出.但是,如果我用注释的第二行替换同步循环挂起.
[m_pDelegate.session invalidateAndCancel];
// [m_pDelegate.session finishTasksAndInvalidate];
blockUntilOperationsComplete();
Run Code Online (Sandbox Code Playgroud)
最终它会退出,我确实得到了我的数据回调.我相信回调最终会在稍后触发MINUTES,因为小的保持活动消息(16个字节长)最终会溢出缓冲区并触发委托调用.有没有办法降低缓冲阈值?
我将为一个项目招募一些开发人员.如果可能的话,我想继续使用git repo,但我不想让历史记录的一部分可访问(通过加密),所以只有我才能接受它.原因是我在头脑中清理了某些专有信息,例如我在开发过程中硬编码到应用程序中的帐户密码.如果没有某种形式的身份验证,我不希望任何其他开发人员看到这一点.
显而易见的解决方案是从头开始创建一个新的回购,但是如果可能的话我想保留完整的历史记录,因为它有我可能想要在路上使用的分支.