所以我升级到了VS2013,希望能用于所有开发.但有一件事让我很烦恼.我的团队使用TFS,我更喜欢git,所以我使用git-tfs来桥接两个用于源代码控制.我们使用TFS工作项来跟踪错误和故事等.如果重要的话,我更喜欢GitExtensions到VS2013的内置git支持.
无论如何,当我在git-tfs存储库下打开解决方案时,VS2013将只在团队资源管理器选项卡中显示git的选项.所以,当我想去TFS工作项查询时,我必须做Connect Team Project> FooProject,或者其他一些...... VS2013此时,非常有帮助将关闭我的开放式解决方案.所以,基本上我无法查看工作项,同时在VS2013中打开解决方案.这似乎是一个严重的设计疏忽.
无论如何,在一个开放的git项目中查看VS2013实例中的工作项查询和/或是否可以完全禁用Visual Studio 2013的git支持,因为我还是喜欢GitExtensions?
所以今天我写了一个相当难以找到的bug,我将std :: string初始化为nullptr(不是指向std :: string的指针,而是值本身).我发现显然只能在C++ 11或更高版本中使用clang.
#include <string>
#include <iostream>
using namespace std;
class Meh{
int x;
};
class Foo
{
private:
std::string x=nullptr;
Meh y=nullptr; //remove this line and it compiles
public:
std::string z=nullptr;
};
int main(void)
{
Foo f;
cout << f.z;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我尝试将nullptr分配给一个类的随机实例,但它不起作用.字符串中有什么神奇之处可以让它工作,这种甚至是有效的语法?我假设在这种情况下我会遇到类型转换错误.
作为参考我用这个编译:
clang++ test.cpp -O3 -g -fno-inline -std=c++11 -Wall
Run Code Online (Sandbox Code Playgroud)
它没有给出任何形式的警告,但如果不使用C++ 11则会出错
我正在编写一些软件,其中每个位必须精确(它是CPU的),所以__packed非常重要.
typedef union{
uint32_t raw;
struct{
unsigned int present:1;
unsigned int rw:1;
unsigned int user:1;
unsigned int dirty:1;
unsigned int free:7;
unsigned int frame:20;
} __packed;
}__packed page_union_t;
Run Code Online (Sandbox Code Playgroud)
那是我的结构和结合.但它不起作用:
page_union_t p; //.....
//This:
p.frame=trg_page;
p.user=user;
p.rw=rw;
p.present=present;
//and this:
p.raw=trg_page<<12 | user<<2 | rw<<1 | present;
Run Code Online (Sandbox Code Playgroud)
应该创建相同的uint32.但他们并没有创造同样的东西.
有什么我看不出我的工会有问题吗?
我只是偶然发现了一个似乎具有违反直觉性能影响的变化.任何人都可以为这种行为提供可能的解释吗?
原始代码:
for (int i = 0; i < ct; ++i) {
// do some stuff...
int iFreq = getFreq(i);
double dFreq = iFreq;
if (iFreq != 0) {
// do some stuff with iFreq...
// do some calculations with dFreq...
}
}
Run Code Online (Sandbox Code Playgroud)
在"性能传递"期间清理此代码时,我决定移动块dFreq内部的定义if,因为它只在内部使用if.有涉及多个计算dFreq,所以我为它保存多个运行时转换从成本并没有完全消除它int来double.我预计没有任何性能差异,或者如果有的话,可以忽略不计的改进.然而,性能下降了近10%.我已经多次测量过,这确实是我做过的唯一改变.上面显示的代码片段在几个其他循环内执行.我在运行中获得非常一致的时序,并且可以肯定地确认我所描述的变化会使性能降低约10%.我期望的性能提高,因为int要double转换只会发生时iFreq != 0.
中断代码:
for (int i = 0; i < ct; ++i) {
// do some …Run Code Online (Sandbox Code Playgroud) 我有一个修改一些文件的进程,我想通过命令行tortoise SVN提交它们,而不必点击确定.对话框出现,我的脚本被迫等到我点击确定.以下是我使用的参数:
TortoiseProc.exe /command:commit /path:"c:\svn\MyProject" /notempfile /logmsg:"Files Modified 2010-02-12" /closeonend:3
Run Code Online (Sandbox Code Playgroud) 我已经做了很多随机的数学课程来帮助我完成我的作业(合成部门是最有趣的),现在我想要扭转一个激进的表达.
例如,我得到的便携式TI计算器
.2360679775
Run Code Online (Sandbox Code Playgroud)
好吧,我想将这个数字转换成等价的非理性表达式,即
sqrt(5)-2
Run Code Online (Sandbox Code Playgroud)
我意识到我可以强行扼杀它......但是当你考虑到浮点的重大舍入误差时,这会带来乐趣,并不是那么容易.
那你怎么做的?有一个简单的算法吗?
在编写脚本引擎时,我有像(伪代码)这样的函数
function is_whitespace?(char c){
return c==' ' || c=='\t' || c=='\r' || c=='\n';
}
Run Code Online (Sandbox Code Playgroud)
好吧,我的问题是大多数langugaes哪个更快?那或者使用正则表达式
function is_whitespace?(char c){
return regex_match('\s',c);
}
Run Code Online (Sandbox Code Playgroud)
我关注的主要语言是C#,C和Ruby,以防它完全依赖于平台.
我没有使用MongoDB的经验,我们正在尝试将JPA应用程序移植到基于MongoDB的应用程序.有用于移植的Java提到的3名司机在这里.转换现有JPA应用程序最容易使用哪个驱动程序?它是吗啡,绿豆还是黎明.更喜欢以前经历过这条道路的用户的一些实践经验.
我正在为一个简单的宠物语言编写一个简单的编译器,我正在创建并来自C背景(虽然我用Ruby编写)我想知道是否需要预处理器.
你怎么看?现代语言中仍然需要"哑"预处理器吗?C#的条件编译功能会被视为"预处理器"吗?是否每种不包含预处理器的现代语言都具有正确替换它所需的实用程序?(例如,由于模板,C++预处理器现在已经过时(尽管仍然依赖).)
我创建了一个TCPip服务器应用程序.该应用程序有一个全局TADOConnection.此全局ado连接既用于主线程查询,也用于线程进程.
这个可以吗?ADOConnection是否内置了同时处理多个查询的机制?
我的应用程序可以在测试环境中找到(2-5个连接).但是在生产环境中部署时,我发现链接到ADOConnection的TADOQuery被设置为打开时,会出现"无法解释的"访问冲突.
我应该使用ADOConnection还是所有查询都应该自己建立与数据库的连接(这可能需要更多资源)?