今天为同事做代码审查时,我看到了一件奇怪的事情.他用这样的花括号包围了他的新代码:
Constructor::Constructor()
{
existing code
{
New code: do some new fancy stuff here
}
existing code
}
Run Code Online (Sandbox Code Playgroud)
如果有的话,结果是什么?这可能是什么原因?这种习惯来自哪里?
编辑:
根据输入和下面的一些问题,我觉得我必须在问题上添加一些,即使我已经标记了答案.
环境是嵌入式设备.C++服装中包含许多遗留的C代码.有很多C转向C++开发人员.
这部分代码中没有关键部分.我只在代码的这一部分中看到过它.没有完成主要的内存分配,只是设置了一些标志,而且有点笨拙.
大括号包围的代码类似于:
{
bool isInit;
(void)isStillInInitMode(&isInit);
if (isInit) {
return isInit;
}
}
Run Code Online (Sandbox Code Playgroud)
(不要介意代码,只需坚持花括号......;))花括号之后还有一些比特麻烦,状态检查和基本信号.
我与那个人谈过,他的动机是限制变量的范围,命名冲突,以及其他一些我无法真正接受的冲突.
从我的POV看起来相当奇怪,我不认为花括号应该在我们的代码中.我在所有答案中都看到了一些很好的例子,说明为什么用花括号包围代码,但是你不应该把代码分成方法吗?
每次我想用jQuery向Jails发布一个JSON对象数组时,我就遇到了这个问题.如果我对数组进行字符串化,我可以看到jQuery正在正常工作:
"shared_items"=>"[{\"entity_id\":\"253\",\"position\":1},{\"entity_id\":\"823\",\"position\":2}]"
Run Code Online (Sandbox Code Playgroud)
但是如果我只是将它作为AJAX调用的数据发送给我:
"shared_items"=>{"0"=>{"entity_id"=>"253", "position"=>"1"}, "1"=>{"entity_id"=>"823", "position"=>"2"}}
Run Code Online (Sandbox Code Playgroud)
然而,如果我只发送一个普通数组,它的工作原理:
"shared_items"=>["entity_253"]
Run Code Online (Sandbox Code Playgroud)
为什么Rails将数组更改为那个奇怪的哈希?想到的唯一原因是Rails无法正确理解内容,因为这里没有类型(有没有办法在jQuery调用中设置它?):
Processing by SharedListsController#create as
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新:
我将数据作为数组发送,而不是字符串,并使用该.push()函数动态创建数组.尝试$.post和$.ajax,相同的结果.
有人能给我一个简短而合理的解释,说明为什么编译器为数据结构添加填充以便对齐其成员?我知道它已经完成,以便CPU可以更有效地访问数据,但我不明白为什么会这样.
如果这只是CPU相关的,为什么在Linux中对齐4字节,在Windows中对齐8字节?
根据标题,我需要导入,但PG备份给了我严格的Postgres SQL,它不适用于MySQL,也使用非指定的编码,我猜是UTF-16.使用db:pull在完成之前需要使用年龄和错误.我很感激任何建议.谢谢.
我刚刚插入一个新的iPhone 6,创建了配置文件,然后我启动了我正在设备上开发的应用程序.它编译得很好,但在链接阶段它错误地:
ProcessProductPackaging
...
错误:输入对象的类'(null)'不响应任何选择器writeToFile:options:error:或writeToFile:atomically
我找不到任何关于那是什么的信息.我没有得到任何特定的代码引用来与它相关联.有没有人经历过这个?
我正在尝试创建一个具有重复纹理的长走廊.如何添加重复纹理并以直角旋转对象(在本例中为平面)以创建走廊墙和天花板?
var texture, material, plane;
texture = THREE.ImageUtils.loadTexture( "../img/texture.jpg" );
texture.wrapT = THREE.RepeatWrapping; // This doesn't seem to work;
material = new THREE.MeshLambertMaterial({ map : texture });
plane = new THREE.Mesh(new THREE.PlaneGeometry(400, 3500), material);
plane.doubleSided = true;
plane.position.x = 100;
plane.rotation.z = 2; // Not sure what this number represents.
scene.add(plane);
Run Code Online (Sandbox Code Playgroud) 尝试使用RVM安装它我收到以下错误:
> [2013-02-25 10:09:24] make CC = /usr/local/bin/gcc-4.2 LD = ld
> LDSHARED = /usr/local/bin/gcc-4.2 -dynamic -bundle CFLAGS = -O3
> -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -pipe XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2
> -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -I/usr/local/opt/libyaml/include -I/usr/local/opt/readline/include -I/usr/local/opt/libxml2/include -I/usr/local/opt/libxslt/include -I/usr/local/opt/libksba/include -I/usr/local/opt/openssl/include -I/usr/local/opt/curl-ca-bundle/include -I/usr/local/opt/sqlite/include -I. -I.ext/include/x86_64-darwin12.2.0 -I./include -I. DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -L/usr/local/opt/libyaml/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/libxml2/lib -L/usr/local/opt/libxslt/lib -L/usr/local/opt/libksba/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/curl-ca-bundle/lib -L/usr/local/opt/sqlite/lib -fstack-protector -Wl,-u,_objc_msgSend …Run Code Online (Sandbox Code Playgroud) (免责声明:在Heroku上部署Sinatra的新手.)
我见过http://www.sinatrarb.com/configuration.html,它告诉我set :environment, :production.我的问题是,如何指定它:"在Heroku中,将环境设置为生产,否则保持测试/开发."
此外,即使在放线之后set :environment, :production,我认为它不起作用,因为当我rackup在本地尝试应用程序时,它仍在运行(当我知道(或者我想我知道)它不应该因为我没有安装postgres在我的电脑上).
的Gemfile
group :production do
gem 'dm-postgres-adapter'
end
group :development, :test do
gem 'dm-sqlite-adapter', "~> 1.2.0"
end
Run Code Online (Sandbox Code Playgroud) 我试图在XCode 6中编译此代码:
std::unordered_multimap< Frame*, Sim3, std::hash<Frame*>, std::equal_to<Frame*>, Eigen::aligned_allocator< std::pair<const Frame*,Sim3> > > trackingFailed;
Run Code Online (Sandbox Code Playgroud)
它失败了:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/unordered_map:1461:5: Static_assert failed "Invalid allocator::value_type"
Run Code Online (Sandbox Code Playgroud)
是否仍然需要aligned_allocator在Eigen 3.2.2中使用?为什么C++ 11/C++ 14和libc ++失败了?
编辑:
no type named value_type如果我从unordered_map模板声明中删除Eigen分配器,我会得到.
当我多次运行 CommandBuffer 时,我通常会在末尾附加一个waitUntilCompleted命令。不过这一次,即使有多个编码器/命令缓冲区,我也会将数据直接呈现给屏幕,因此我不需要向 CPU 传递任何内容。我想我可以不用等待,是吗?
不过考试呢?在课堂外等待 GPU 完成的最佳方法是什么?