Main-function prototype verification and program termination behavior

在C和C++中流传着很多版本的main函数原型,不同的书里也有不同的写法。今天我从几种标准(C89/99/11以及C++98/03/11/14)的角度来寻找一下什么是“标准行为”以及在主函数中return后发生了什么。

阅读全文 »

Incompatibilities between C and C++

之前提到过数次C和C++并不是一个语言,就算是C++中从C继承来的那部分也和ISO C有很大区别,以后我会逐渐整理一些它们之间不兼容的特性到这里来。

阅读全文 »

The difference between declaration and define in C++

看过不少C++的书籍里都没有明确地指出处声明(declaration)与定义(define)的区别,或者只是提到了需要支持分离式编译,使用extern specifier的就是声明,不带的就是定义。实际上我觉得C++标准中对于声明(declaration)与定义(define)的区别描述的更为清晰。

阅读全文 »

C++ object construction and destruction order

通过一道CppQuiz的题来使用C++14标准描述C++的对象在继承情况下构造和析构的顺序,以及在对象构造/析构时抛出异常。

阅读全文 »

Samba Configuration on Linux

通过Samba我们可以将Linux上的文件夹挂载到Windows上,开台Linux虚拟机部署Samba之后,在Windows就可以使用我前几天写的远程编译插件(sublimeRemoteCompile)来写代码啦!还是挺爽的。今天把服务器配置Samba共享文件的方法简单记录一下,方便有同样需求的朋友。

阅读全文 »

Knowledge collection of tools and development environments

一些工具、环境配置的一些技巧或者相关的知识概念记录在这里。

阅读全文 »

Remote compilation plugin for SublimeText

经常在Win上写一些跑在Linux上的测试小代码还需要手动在Linux下执行编译命令有些麻烦,而且我用树莓派配置samba将代码共享到Win上也需要ssh上去手动编译,有点浪费时间。
这几天闲时写了一个SublimeText的小插件,用来在windows下远程编译C/C++的代码,就是在Windows上写代码但是实际会在Linux上执行。目前只是实现了功能,等放假后休息时有空优化一下。
代码放在Github上:sublimeRemoteCompile,使用了一些C++11的特性,编译时需指定。

阅读全文 »

The logic behind array subscript access

对于数组而言,下标运算是随机读写的一种方式,也是最常用的方式。但是有很多教材(尤其是国内教材)一上来就说数组名就是指针,这是不对的。而且对于数组的下标访问背后是有一套规则的,熟悉这些规则可以在一些复杂语义的情况下分析出代码的实际含义。

阅读全文 »

Wrap an override member function pointer

使用变长参数模板和lambda(或者使用generic lambda)来裹一层重载的成员函数指针,从而方便使用(bind绑定或者其他需要重载的成员函数指针的地方)。
关于成员函数指针的更多介绍请看我的另一篇文章:C++中指向类成员的指针并非指针

阅读全文 »