小编Col*_*ett的帖子

如何检测是否有任何外部库正在调用[UIDevice currentDevice] uniqueIdentifier]?

因此,由于Apple现在拒绝访问UDID的应用程序,在我们公司的当前项目中,我们需要删除所有调用此属性的API:

[[UIDevice currentDevice] uniqueIdentifier]
Run Code Online (Sandbox Code Playgroud)

我们已经消除了我们自己的代码中的所有调用,但需要确保我们使用的许多外部库不会调用此属性.

确定库是否正在调用此属性的最可靠方法是什么?

先感谢您!

uniqueidentifier udid uidevice ios

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

在编译时确定struct成员字节偏移量?

我想在编译时找到struct成员的字节偏移量.例如:

struct vertex_t
{
    vec3_t position;
    vec3_t normal;
    vec2_t texcoord;
}
Run Code Online (Sandbox Code Playgroud)

我想知道字节偏移量normal是(在这种情况下它应该是12.)

我知道我可以使用offsetof,但这是一个运行时功能,我宁愿不使用它.

我正在努力实现甚至可能吗?

编辑:offsetof是编译时,我的坏!

c++ struct offsetof offset compile-time

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

Jenkins git fetch timeout

我在我的Mac OS X Mavericks机器上运行Jenkins 2.0.我正在尝试从内部服务器下载存储库.但是,这个工作挂了git fetch电话10分钟,然后超时.

如果我手动运行git clonegit fetch从shell脚本(来自Jenkins),我得到相同的整体结果,除了作业无休止地挂起.

我可以从终端运行clonefetch命令就好了.

我想知道这是否是某种需要解决的用户权限错误.

这是日志:

Started by user Colin Basnett
Building in workspace /Users/Shared/Jenkins/Home/workspace/Service
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://192.168.4.40/Bonobo.Git.Server/Service.git # timeout=10
Fetching upstream changes from http://192.168.4.40/Bonobo.Git.Server/Service.git
 > git --version # timeout=10
using .gitcredentials to set credentials
 > git config --local credential.username jenkins # timeout=10
 > git config --local credential.helper store …
Run Code Online (Sandbox Code Playgroud)

git jenkins jenkins-2

8
推荐指数
1
解决办法
1万
查看次数

std :: sort将元素比较为null

我有以下排序算法,它排序一个std::vector独特的armor_set指针.通过我的排序算法的某些属性,它闷死了起来,跑进这最终比较有效的未定义行为lhsrhs这是一个nullptr.

尽管多次移动算法,但我一直无法辨别问题.我觉得好像我错过了一些关于这个std::sort算法如何工作的简单规则.

任何帮助,将不胜感激.

std::vector<armor_set*> armor_sets;

//insertion of unique armor sets here

std::sort(armor_sets.begin(), armor_sets.end(), [](armor_set* lhs, armor_set* rhs)
{
    auto lhs_collectible_count = collectible_mgr::get().count(lhs->needed_collectible);
    auto rhs_collectible_count = collectible_mgr::get().count(rhs->needed_collectible);

    if(lhs_collectible_count > 0 && rhs_collectible_count == 0)
    {
        return true;
    }
    else if(lhs_collectible_count == rhs_collectible_count)
    {
        return lhs->sort_index > rhs->sort_index;
    }
    else
    {
        auto lhs_collectibles_needed_count = lhs_collectible_count - lhs->collectibles_needed;
        auto rhs_collectibles_needed_count = rhs_collectible_count - rhs->collectibles_needed;

        return lhs_collectibles_needed_count > rhs_collectibles_needed_count;
    }
});
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm c++11

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

Python struct.Struct.size返回意外值

我使用Python将一些文件转换为二进制格式,但我遇到了一个奇怪的陷阱.

问题

import struct
s = struct.Struct('Bffffff')
print s.size
Run Code Online (Sandbox Code Playgroud)

结果

28
Run Code Online (Sandbox Code Playgroud)

显然预期的大小是25,但它似乎将第一个byte(B)解释为某种类型的4字节整数.它还会写出一个4字节的整数而不是一个字节.

变通

存在一种解决方法,即将其分离B为单独的struct,如下所示:

import struct
s1 = struct.Struct('B')
s2 = struct.Struct('ffffff')
print s1.size + s2.size
Run Code Online (Sandbox Code Playgroud)

结果

25
Run Code Online (Sandbox Code Playgroud)

这种行为有什么解释吗?

python struct

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

boost :: lexical_cast无法识别重载的istream运算符

我有以下代码:

#include <iostream>
#include <boost\lexical_cast.hpp>

struct vec2_t
{
    float x;
    float y;
};

std::istream& operator>>(std::istream& istream, vec2_t& v)
{
    istream >> v.x >> v.y;

    return istream;
}

int main()
{
    auto v = boost::lexical_cast<vec2_t>("1231.2 152.9");

    std::cout << v.x << " " << v.y;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我从Boost收到以下编译错误:

错误1错误C2338:目标类型既不是std :: istream able nor std::wistream能够的

这看起来很简单,过去一小时我一直在桌子上打我的头.任何帮助,将不胜感激!

编辑:我正在使用Visual Studio 2013.

c++ boost operator-overloading istream lexical-cast

6
推荐指数
1
解决办法
1505
查看次数

Boost.Python和Boost.Function

我想包装一个boost::function类成员,以便它可以通过以下方式使用:

using namespace boost;
using namespace boost::python;

struct gui_button_t
{
    function<void()> on_pressed;
};

class_<gui_button_t>("GuiButton", init<>())
    .def("on_pressed", &gui_button_t::on_pressed);
Run Code Online (Sandbox Code Playgroud)

然后在Python中:

def callback_function():
    print 'button has been pressed'

button = GuiButton()
button.on_pressed = callback_function
button.on_pressed() # function should be callable from C++ or Python
Run Code Online (Sandbox Code Playgroud)

但是,尝试此操作会产生关于类模板参数等的大量错误.

我做了一些搜索,但一直找不到我一直在寻找的答案.下面的文章有点接近,但他们没有直接涉及这个主题.

http://bfroehle.com/2011/07/18/boost-python-and-boost-function-ii/

我在这做错了什么?为获得此功能所需的界面,我需要做什么?

提前谢谢了.

c++ python boost function

4
推荐指数
1
解决办法
548
查看次数

无法在std :: map中使用std :: shared_ptr作为值类型?

我有以下课程,我想添加到mapa shared_ptr.

struct texture_t
{
hash32_t hash;
uint32_t width;
uint32_t height;
uint32_t handle;
};
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用make_pair,然后将其添加到map...

auto texture = std::make_shared<texture_t>(new texture_t());
std::make_pair<hash32_t, std::shared_ptr<texture_t>>(hash32_t(image->name), texture);
Run Code Online (Sandbox Code Playgroud)

然后make_pair,我收到以下编译错误:

error C2664: 'std::make_pair' : cannot convert parameter 2 from 'std::shared_ptr<_Ty>' to 'std::shared_ptr<_Ty> &&'
Run Code Online (Sandbox Code Playgroud)

我觉得我错过了一些明显的东西,任何线索?

map shared-ptr c++11

3
推荐指数
1
解决办法
2972
查看次数

将推断类型传递给std :: find_if lambda函数

我有以下代码.我试图消除将localization_data_t::language_t类型显式传递给lambda参数的需要.

auto language_itr = std::find_if(languages.begin(), languages.end(), [&](const localization_data_t::language_t& language)
{
    return language.code == language_code;
});
Run Code Online (Sandbox Code Playgroud)

我假设有一种方法可以做到这一点,因为要迭代的对象的类型可以由编译器通过迭代器的底层类型派生.但是,我在旅行中没有找到这样的例子.

任何帮助,将不胜感激.

c++ lambda c++11

2
推荐指数
1
解决办法
640
查看次数

PLY YACC pythonic语法用于累积逗号分隔值列表

我第一次使用YACC并习惯使用BNF语法.

我目前正在建设listtype从一个逗号分隔的列表S(如:int,float,string):

def p_type(p):
    '''type : primitive_type
            | array
            | generic_type
            | ID'''
    p[0] = p[1]


def p_type_list(p):
    '''type_list : type
                 | type COMMA type_list'''
    if not isinstance(p[0], list):
        p[0] = list()
    p[0].append(p[1])
    if len(p) == 4:
        p[0] += p[3]
Run Code Online (Sandbox Code Playgroud)

这些规则有效,但我觉得我的p_type_list逻辑有点像kludge,可以简化为单行.

我没有在网上找到任何PLY特定的例子.任何帮助将不胜感激!

python yacc ply

2
推荐指数
1
解决办法
1237
查看次数