0%

原文地址

Clang的API发展十分迅速,其中也包括libclang和Python绑定。因此,本次推送中的示例可能不再起作用。如果想要那些基于最新的Clang的工作示例,请检查我在Github上的llvm-clang-samples repository仓库

对于那些需要在Python中去解析和分析C代码的人,在发现pycparser后一定会很兴奋。然而,如果变成是去解析C++,pycparser并不是好的解决办法。当我被问及关于在pycparser中增加支持C++的计划时,我的回答通常是 -- 没有这样的计划,你应该去别处找找。尤其地,是在Clang中。

Clang是一款针对C,C++和Object C的编译器前端。它是由Apple支持的一款具有自由协议的开源项目,并使用它们自己的工具。连同它的父项目 -- LLVM编译器后端,Clang渐渐成为一款gcc的强大替代品。在Clang(包括LLVM)身后有着一流的开发团队,并且它的代码在开源环境下也是C++代码中设计最好的之一。Clang的发展十分积极,密切关注着最新的C++标准。

于是当我被问关于解析C++的问题的时候,我的回答总是Clang。诚然,它还存在着一些小问题。人们喜欢pycparser因为它是Python实现的,而Clang的API接口是C++,并不是最极客并友好的语言,退一步来说。

阅读全文 »

初始化操作

git config -global user.name <name>     #设置提交者名字

git config -global user.email <email>   #设置提交者邮箱

git config -global core.editor <editor> #设置默认文本编辑器

git config -global merge.tool <tool>    #设置解决合并冲突时差异分析工具

修改和提交

git add .                       #添加所有改动过的文件

git add <file>                  #添加指定的文件

git mv <old> <new>              #文件重命名

git rm <file>                   #删除文件

git rm -cached <file>           #停止跟踪文件但不删除

git commit -m <file>            #提交指定文件

git commit -m "commit message"  #提交所有更新过的文件

git commit -amend               #修改最后一次提交

git commit -C HEAD -a -amend    #增补提交
阅读全文 »

获取当前工作目录

os.getcwd()

获取执行脚本所在路径

sys.path[0]

判断目录是否存在

os.path.exists(path)  返回false表示不存在

删除一个非空的目录

import shutil

shutil.rmtree(path)
阅读全文 »

回调函数指针传递

在从ccMacros.h中定义了CC_CALLBACK_n系列宏,其中n为0~4,表示包裹回调函数指针的参数个数。

以触摸事件为例:

void Test::initListener()
{
    auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = CC_CALLBACK_2(Test::onTouchBegan, this);
    listener->onTouchMoved = CC_CALLBACK_2(Test::onTouchMoved, this);
    listener->onTouchEnded = CC_CALLBACK_2(Test::onTouchEnded, this);
    listener->onTouchCancelled = CC_CALLBACK_2(Test::onTouchCancelled, this);
}
阅读全文 »