小编zxc*_*cat的帖子

makefile中的预构建步骤

如何运行必须在所有其他makefile命令之前执行的脚本?如果没有什么可构建的话,脚本的执行会很好(但不是强制性的).

我搜索了SO和谷歌,但找不到任何东西.

我有这个解决方法:

# myscript.bat output is empty
CHEAT_ARGUMENT = (shell myscript.bat)
CFLAGS += -DCHEAT_ARGUMENT=$(CHEAT_ARGUMENT)
AFLAGS += -DCHEAT_ARGUMENT=$(CHEAT_ARGUMENT)
Run Code Online (Sandbox Code Playgroud)

但它非常难看.还有其他方法可以在makefile中运行" pre-build step " 吗?

makefile prebuild

30
推荐指数
3
解决办法
4万
查看次数

常见的SIMD技术

我在哪里可以找到有关常见SIMD技巧的信息?我有一个指令集,知道如何编写非棘手的SIMD代码,但我知道,SIMD现在功能更强大.它可以保存复杂的条件无分支代码.
例如(ARMv6),以下指令序列将Rd的每个字节设置为等于Ra和Rb的相应字节的无符号最小值:

USUB8 Rd, Ra, Rb
SEL Rd, Rb, Ra
Run Code Online (Sandbox Code Playgroud)

教程/非常见SIMD技术的链接也很好:) ARMv6对我来说是最有趣的,但x86(SSE,...)/ Neon(在ARMv7中)/其他也很好.

arm sse simd neon mmx

17
推荐指数
2
解决办法
2519
查看次数

UITextView contentSize更改和iOS7中的NSLayoutManager

问题:在某些情况下UITextView默默地改变它contentSize.

最简单的案例textView与大文本和键盘.只需添加UITextView插座并设置- viewDidLoad为:

- (void)viewDidLoad {
    [super viewDidLoad];
    // expand default "Lorem..."
    _textView.text = [NSString stringWithFormat:@"1%@\n\n2%@\n\n3%@\n\n4%@\n\n5", _textView.text, _textView.text, _textView.text, _textView.text];
    _textView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
    _textView.contentInset = UIEdgeInsetsMake(0, 0, 216, 0);
}
Run Code Online (Sandbox Code Playgroud)

现在显示和隐藏键盘会在某些情况下导致文本跳转.

我已经找到了按子类跳转的原因UITextView.我的子类中唯一的方法是:

- (void)setContentSize:(CGSize)contentSize {
    NSLog(@"CS: %@", NSStringFromCGSize(contentSize));
    [super setContentSize:contentSize];
}
Run Code Online (Sandbox Code Playgroud)

它显示contentSize了键盘隐藏的缩小和扩展.像这样的东西:

013-09-16 14:40:27.305 textView-bug2[11087:a0b] CS: {320, 651}
2013-09-16 14:40:27.313 textView-bug2[11087:a0b] CS: {320, 885}
2013-09-16 14:40:27.318 textView-bug2[11087:a0b] CS: {320, 902}
Run Code Online (Sandbox Code Playgroud)

看起来UITextViewiOS7中的行为发生了很大变化.有些事情现在已经破裂了.

进一步发现我发现layoutManagertextView的新属性也发生了变化.现在日志中有一些有趣的信息:

2013-09-16 14:41:59.352 textView-bug2[11115:a0b] CS: …
Run Code Online (Sandbox Code Playgroud)

nslayoutmanager uitextview ios ios7

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

C-> C++在#define中自动将void指针转换为C++中的Type指针,如果没有给出类型(C风格)[MSVS]

嗨!

我使用了以下C宏,但在C++中它无法自动转换void*type*.

#define MALLOC_SAFE(var, size) { \
    var = malloc(size); \
    if (!var) goto error; \
}
Run Code Online (Sandbox Code Playgroud)

我知道,我可以这样做:

#define MALLOC_SAFE_CPP(var, type, size) { \
    var = (type)malloc(size); \
    if (!var) goto error; \
}
Run Code Online (Sandbox Code Playgroud)

但我不想重写大部分代码,MALLOC_SAFE使用的地方.

有没有办法在没有给宏的类型的情况下这样做?也许一些MSVC 2005 #pragma/__declspec/其他?

ps:我不能使用C编译器,因为我的代码是大项目的一部分(数百个模块之一).现在它是在C++上.我知道,我可以单独构建我的代码.但这是旧代码,我只是想快速移植它.

问题是关于void*cast;)如果不可能,我只需用MACRO_SAFE_CPP替换MACRO_SAFE

谢谢!

c c++ casting void-pointers visual-c++

7
推荐指数
3
解决办法
4631
查看次数

从Boost多索引迭代器获取数字索引

我存储了一堆以下内容

struct Article {
    std::string title;
    unsigned db_id;     // id field in MediaWiki database dump
};
Run Code Online (Sandbox Code Playgroud)

在Boost.MultiIndex容器中,定义为

typedef boost::multi_index_container<
    Article,
    indexed_by<
        random_access<>,
        hashed_unique<tag<by_db_id>,
                      member<Article, unsigned, &Article::db_id> >,
        hashed_unique<tag<by_title>,
                      member<Article, std::string, &Article::title> >
    >
> ArticleSet;
Run Code Online (Sandbox Code Playgroud)

现在我有两个迭代器,一个来自index<by_title>,一个来自index<by_id>.将这些索引转换为容器的随机访问部分的最简单方法是什么,而不添加数据成员struct Article

c++ containers boost multi-index boost-multi-index

6
推荐指数
2
解决办法
2349
查看次数

从Visual Studio调试远程设备(PDA,ARM)上的winMobile应用程序

嗨!

我有一些PDA(Windows Mobile)来测试我的应用程序.其中一个是HTC Touch Dual,它在调试方面有一些缺陷.我可以使用另一个ARMv6设备,但它距离很远.所以我不能使用USB线,但可以使用TCP/IP(互联网,而不是内联网).

您知道吗,我如何连接远程Windows移动设备来调试应用程序呢?

我们尝试了不同的方法,现在我们知道了:

  1. ActiveSync很糟糕.它禁用了与设备的所有外部连接,并且在通过ActiveSync连接时远程调试设备是不可能的(或者我不知道如何).
  2. 我们已经通过Wi-Fi创建了VPN,连接设备到远程PC,并且可以通过VPN访问设备的路由.在此步骤中,可以在远程PC上从Visual Studio 连接设备而不使用ActiveSync(MSDN).但是我的电脑上的Visual Studio连接不可用 - "设备未准备就绪".我可以ping设备,但不能从Visual Studio连接它.

我检查过以下内容:

  • 如上面的MSDN文章所述,没有ActiveSync连接的二进制版本是正确的
  • 路由器/防火墙不会阻止任何事情
  • 设备已准备好进行调试
  • 在远程PC连接和我的PC连接的情况下,嗅探包到设备看起来类似,但不知何故我的PC只建立1个连接,而远程2

我认为,没有ActiveSync的VPN和PDA连接非常接近远程调试,但它出了问题.也许我现在只需要睡一觉:)

问题是:

  1. 您知道吗,如何以简单的方式调试远程winCE应用程序?
  2. 如果这是最简单的方法,"VPN方法"会出现什么问题

谢谢.

debugging remote-debugging windows-mobile windows-ce visual-studio

5
推荐指数
1
解决办法
4343
查看次数

停止执行我的程序并转到调试器而不设置断点(Visual Studio/GCC和C++)

我前段时间在SO上找到了有关此功能的信息,但主题是Visual Studio隐藏功能(2005-2008)的副本我再也找不到了.

我想用这样的东西:

#ifdef DEBUG
#define break_here(condition) if (condition) ... // don't remember, what must be here
#else
#define break_here(condition) if (condition) return H_FAIL;
#endif
//...
hresult = do_something(...);
break_here(hresult != H_OK);
//...
var = do_other_thing(...);
break_here(var > MAX_VAR);
Run Code Online (Sandbox Code Playgroud)

它必须表现得像一个错误的断点.这就像断言,但没有对话,更轻量级.

我不能在这里使用普通断点,因为我的模块是几个项目的一部分,可以在几个VS解决方案中进行编辑.当在其他解决方案中编辑代码时,这会导致在一个解决方案中设置的断点在源中移位.

debugging cross-platform breakpoints visual-studio

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

是否需要释放来自OpenSL ES音频播放器的完成缓冲区?

只是为了确认.当通过OpenSL ES for Android创建的音频播放器完成播放缓冲区时,垃圾收集器会自动释放该缓冲区吗?或者我需要自己释放缓冲区吗?

如果是后者,我可以使用一些帮助.但就目前而言,我不会发布任何代码,直到我被告知我需要自己做...

c android android-ndk opensl

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

如何在"for..in"循环中从处理中排除添加到Array方法?(JavaScript的)

我添加了一些有用的助手Array(比如toSource()Opera).现在for..in返回具有普通属性的函数.

我现在正在使用for..in,因为代码更易于阅读.它是js的原生功能,因此必须更快.

但是在循环中添加类型检查可以更容易地使用经典for(;;).

有没有什么方法可以避免for..in枚举函数?

跨浏览器工作不是很必要(必须在Opera中工作),但速度很重要.

谢谢.


编辑:
有没有能力避免for..in任何对象的枚举函数或自定义属性?

javascript opera prototypejs

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

适用于SDK 4的自定义iPhone KeyBoard(iOS4操作系统)

旧SDK解决方案:

- (void)modifyKeyboard:(NSNotification *)notification 
{
    UIView *firstResponder = [[[UIApplication sharedApplication] keyWindow] performSelector:@selector(firstResponder)];

    for (UIWindow *keyboardWindow in [[UIApplication sharedApplication] windows])
        for (UIView *keyboard in [keyboardWindow subviews])
            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
            {
                MyFancyKeyboardView *customKeyboard = [[MyFancyKeyboardView alloc] initWithFrame: CGRectMake(0, 0, keyboard.frame.size.width, keyboard.frame.size.height);
                                                       [keyboard addSubview: customKeyboard];
                                                       [customKeyboard release];
            }
}
Run Code Online (Sandbox Code Playgroud)

按照上面的方法,我现在发现iOS4是不同的.不起作用.我确信这是由于命名子视图(或排序)的差异.对于iphone SDK 4,有谁知道如何解决同样的问题?

iphone objective-c ios

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