2017-08-10 ruki
之前的版本对编译控制粒度,只能到target这一级: ```lua -- 全局根配置,所有target都会被影响 add_defines("ROOT") target("test") -- target目标配置,只对test目标下的所有源文件编译生效 add_defines("TEST") add_files("src/*.c") ``` 最近给2.1.6开发版本中的add_files进行了改进,支持基于files更细粒度的编译选项控制,例如: lua target("test") add_defines("TEST1") add_files("src/*.c") add_files("test/* 继续阅读 »
2014-12-09 Mithrilwoodrat
这几个实验都是上课时候一两小时实现的,因为老师给出的参考代码有些惨不忍睹(虽然我写的也没好到哪去).因为时间有限,就没用C++. 同样是因为时间有限,仅供参考,有bug概不负责. 代码如下 # -- coding: utf-8 -- class Bank(object): def init(self): self.totalpro = 0 self.process = [] self.res_num = 4 self.res_type = ['A', 'B', 'C', 'D'] self.Resources = {'A':10, 继续阅读 »
2016-11-11 ALEX LIN
更新日志 第1章 熟悉 Objective-C 第1条 了解 Objective-C 语言的起源 Objective-C 为C语言添加了面向对象特性,是其超集。Objective-C 使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型。接收一条消息之后,究竟应执行何种代码,由运行期环境而非编译器来决定。 理解C语言的核心概念有助于写好Objective-C程序。尤其要掌握内存模型与指针。 第2条 在类的头文件中尽量少引入其他头文件 除非确有必要,否则不要引入头文件。一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入那些类的头文件。这样做可以尽量降低类之间的耦合。 有时无法使用向前声明,比如要声 继续阅读 »
2017-10-17 ruki
xmake-vscode plugin is a xmake integration in Visual Studio Code. It is deeply integrated with xmake and vscode to provide a convenient and fast cross-platform c/c++ development and building. Features Colorization Completion Lists StatusBar Commands Configuration Build Run and Debug Record and Playback Problem Color 继续阅读 »
2016-07-16 ruki
We create an empty console project first: ```bash $ xmake create -P ./hello create hello ... create ok!👌 ``` And xmake will generate some files: ```bash $ cd ./hello $ tree . . ├── src │   └── main.c └── xmake.lua ``` It is a simple console program only for printing hello xmake! ```bash $ cat ./src/main.c incl 继续阅读 »
2017-07-31 ruki
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。 现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。 但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。 msvc的预编译头处理 预编译头 继续阅读 »
2013-06-17 Robert Zhang
分析:6.4节《其他计数序列》里给出了Fibonacci数列的封闭形式,提示里也说“能否借助封闭形式来避免高精度算数”,但高精度算数还是无法避免。理由如下:more F(n) = (a ^ n - b ^ n) / c 其中a,b,c为常数: 继续阅读 »
2016-08-04 ruki
tbox的vector容器沿用了stl库中vector的命名,说白了就是以数组方式存储元素,也是整个容器库中最基础的容器之一。 当然,在c中用tbox的vector跟用stl的vector其实差不了太多,用起来都很方便。 先看个简单的例子熟悉下: ```c // 初始化一个维护大小写敏感字符串的vector容器,第一参数设置元素自动增长大小,这里使用0表示默认大小 tb_vector_ref_t vector = tb_vector_init(0, tb_element_str(tb_true)); if (vector) { // 在头部插入元素 tb_vect 继续阅读 »
2017-05-02 YongHao Hu
go
多线程的并发处理: 在有限时间内, 同时并发处理 n 个资源 ``` //from https://talks.golang.org/2012/concurrency.slide#47 c := make(chan Result) go func() { c 继续阅读 »
2016-07-16 ruki
首先我们通过内置的工程模板创建一个空工程: ```bash $ xmake create -P ./hello create hello ... create ok!👌 ``` 这个时候xmake将会产生一些工程文件,如下: ```bash $ cd ./hello $ tree . . ├── src │   └── main.c └── xmake.lua ``` 这个简单的程序仅仅只是为了打印输出: hello xmake! ```bash $ cat ./src/main.c include int main(int argc, char** argv) { printf("hello xmak 继续阅读 »