注意
本文转载自http://nshipster.cn/clang-diagnostics/
概要
诊断结合了逻辑与分析来得出一个结论。这是最纯粹的科学和工程学,也是人类最有力的推理。
more
在医学界,诊断是通过实验室样本做后盾的本能来判断。而对于工业制造,则是通过在统计和方向都等同应用来诊断产品故障。
对于我们开发者来说,我们通过代码通知后续代码的生产,创建了一个在过去半个世纪里呈几何级数发展的技术的正反馈循环。尤其对于我们的 Objective-C 开发者来说,最有效的诊断来自 Clang。
Clang 是 C / Objective-C 的前端的 LLVM 编译器。它对 Objective-C 的语义和语法有
继续阅读 »
更新日志
分析工具:clang
```
clang -rewrite-objc test.m
// UIKit
clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk xxxxx.m
```
block 的数据结构定义
对应的结构体定义如下:
```
struct Block_descriptor {
unsigned long int reserved
继续阅读 »
最近在学习Tkinter的知识,这使用图片时发现不能正常显示,google一下,发现Tkinter默认支持gif格式,使用其他格式的文件需要安装PIL模块。不过在安装过程中出现了一下错误问题:
```
1 warning generated.
clang: warning: -framework Tcl: 'linker' input unused
clang: warning: -framework Tk: 'linker' input unused
In file included from _imagingtk.c:19:
/Applications/Xcode.app/Contents/Developer/Platform
继续阅读 »
主页
源码
更新内容
此版本,主要修复一些bug和稳定性改善
改进
修改安装和卸载的action处理
更新工程模板
增强函数检测
Bugs修复
#7: 修复用模板创建工程后,target名不对问题:'[targetname]'
#9: 修复clang不支持c++11的问题
修复api作用域泄露问题
修复在windows上的一些路径问题
修复检测宏函数失败问题
修复检测工具链失败问题
修复windows上编译android版本失败
继续阅读 »
原子操作,线程间交互数据最细粒度的同步操作,它可以保证线程间读写某个数值的原子性。
由于不需要加重量级的互斥锁进行同步,因此非常轻量,而且也不需要在内核间来回切换调度,效率是非常高的。。
那如何使用原子操作了,各个平台下都有相关api提供了支持,并且向gcc、clang这些编译器,也提供了编译器级的__builtin接口进行支持
windows的Interlockedxxx和Interlockedxxx64系列api
macosx的OSAtomicXXX系列api
gcc的__sync_val_compare_and_swap和__sync_val_compare_and_swap_8等__builtin接口
x86和x86_
继续阅读 »
线程局部存储(Thread Local Storage,TLS)主要用于在多线程中,存储和维护一些线程相关的数据,存储的数据会被关联到当前线程中去,并不需要锁来维护。。
因此也没有多线程间资源竞争问题,那如何去实现TLS存储呢,主要有以下几种方式:
gcc和clang的__thread修饰符
windows下msvc的__declspec(thread)修饰符
pthread库pthread_setspecific和pthread_getspecific接口
windows下的TlsSetValue和TlsGetValue
thread和declspec(thread)的使用
其中thread和declspec(thread)
继续阅读 »
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。
现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的,
如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。
但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。
msvc的预编译头处理
预编译头
继续阅读 »
更新日志
英文原文出处:http://amattn.com/p/arc_best_practices.html
一些可选背景故事:
相关文档:迁移至ARC版本说明
Mike Ash 在他的 Friday Q&As 也有一篇关于ARC的文章。
深入的技术文档在 LLVM 项目的 CLANG 网站上。
假设你正在使用 iOS 5 或者更高版本,而不是 4。实际上,弱指针是 ARC 中的一个重要工具,所以我不建议在 iOS 4 中使用 ARC。
更新注意事项
这份文件自从2011年发布以来,一直在不断更新。最后一次微小的修订是在 2013年发布 iOS 7。
继续阅读 »
牛客网编程练习-剑指offer,语言:c++11(clang++ 3.9)。
1.【数组】二维数组中的查找
继续阅读 »
Website
Sources
Changelog
Changes
Change install and uninstall actions
Update templates
Improve to check function
Bugs fixed
#7: Fix create project bug with '[targetname]'
#9: Support clang with c++11
Fix api scope leaks bug
Fix path bug for windows
Fix check function bug
Fix check toolchains failed
Fix compile fa
继续阅读 »