2016-06-17 YongHao Hu
C++
Here is a simple example, what is the output of this program? ``` include using namespace std; int main() { float f = 0.0; int i = 5; f = (float)i; cout< 继续阅读 »
2015-02-24 YongHao Hu
QNAN wiki上是这样说的: A QNaN is a NaN with the most significant fraction bit set. QNaN’s propagate freely through most arithmetic operations. These values pop out of an operation when the result is not mathematically defined. (details)[http://en.wikipedia.org/wiki/NaN] 我尝试过sqrt(-1), 1/0, NAN/NAN都不行 结果: 继续阅读 »
2017-04-09 Mithrilwoodrat
1 之前的项目里做了很多跟 DSL 有关的工作,加上某天在 HackerNews 上看到了how-i-wrote-a-self-hosting-c-compiler-in-40-days 这篇文章,于是又燃起了动手写个玩具编译器的想法。 继续阅读 »
2016-06-01 JustWe
分析一个C语言的Lex & Yacc 程序 博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse 本节我们来分析一个能匹配C语言的Lex & Yacc 程序 Lex文件:http://www.lysator.liu.se/c/ANSI-C-grammar-l.html Yacc文件:http://www.lysator.liu.se/c/ANSI-C-grammar-y.html 也可以直接在我的github代码地址中进行下载。 先来分析Lex文件 ``` c D [ 继续阅读 »
2015-07-06 王财勇
首先说明一下我的安装环境: 操作系统:Win7 64位 SP1 Matlab: 2012a 64位& 2013a 64位(两个版本均试验过) Visual Studio:2010 sp1旗舰版 下面介绍具体的安装方法: more Windows SDK 7.1 的安装(Win 7 64bit,x64平台) 闲话少说,先准备素材。这里我已经为您准备好了一切。 Windows SDK 7.1 安装包 vs2010 sp1 VC-Compiler-KB2519277 注意:在安装VS2010时还自动安装了 Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319 及更高版本 继续阅读 »
2016-04-01 AllanChan
所有的指针在赋值为NULL、一个引用(地址)或者另一个指针之前都是未被初始化的。 当创建一个指针时,系统只分配了用来存储指针本身的内存空间,并不分配用来存储数据的内存空间。因此在使用指针之前,必须给它赋予一个已分配的内存地址。使用指针的时候一定要注意,不能对未初始化的指针取值!! 继续阅读 »
2016-10-12 曹强
闭包是js中一个难懂又必须征服的概念,他的形成与变量作用域以及变量的生存周期密切相关。 变量作用域和生存周期 作用域,按字面理解,就是指变量的有效范围,超出这个范围就无法访问。 在函数中,里面函数可以访问外面的变量,但是外面无法访问内部变量。举个简单例子: var a = 1; var fun1 = function() { var b = 2; var fun2 = function() { var c = 3; alert(b); //2 alert(c); //3 } fun2(); alert(c); //c is not de 继续阅读 »
2016-10-12 曹强
用策略模式实现缓动动画 需求:让小球以各种缓动效果在页面中运动 动画开始前需要记录的: 小球所在原始位置 小球移动的目标位置 动画开始时的时间点 小球运动的时间点 之后,用setInterval创建一个定时器,定时器每19秒循环一次。 //缓动算法,此算法移植于flash var tween = { //t:动画已消耗的时间,b:小球原始位置,c:小球目标位置,d:动画持续时间 linear: function(t, b, c, d) { return c*t/d + b; }, reseIn: function(t, b, c, d) { ret 继续阅读 »
2017-08-08 ruki
如果我们要写跨平台的c/c++代码,很多时候需要处理由于不同编译器对c/c++各个标准支持力度不同导致的兼容性问题,一般通常的解决办法是:自己在代码中通过宏去判断各个编译器的版本、内置宏、标准库宏、__has_feature等来检测处理。 自己如果在代码中按上述的方式检测,会很繁琐,尤其是像c++这种存在大量语法特性,如果一一检测过来,工作量是非常大的。 通过构建工具预先检测编译特性 另外比较省事的方式,就是依赖构建工具提前做好检测,然后把检测结果作为宏添加到编译中去,这样代码只需要判断对应的特性宏是否存在,就可以进行处理了。 在cmake中就有类似的检测机制,非常强大,因此xmake也对其进行了支持,提供更加灵活强大的编译 继续阅读 »
2016-06-26 ruki
xmake provides some project templates, you can easily create an empty project. Create a c++ console project: bash xmake create -l c++ -t 1 demo or xmake create --language=c++ --template=1 demo Create a c static library project: bash xmake create -l c -t 5 demo or xmake create --language=c 继续阅读 »