最近,在使用qmake,prl和TEMPLATE=subdir时犯了一个错误。记录之以便以后查看。
项目结构:
project.pro main\ \__ main.pro lib\ \__ lib.pro
project.pro中写的是:
TEMPLATE = subdirs SUBDIRS = main lib main.depends = lib
main.pro中有一句:
CONFIG += link_prl
&nbs..
/* C++是很危险的:第一章 构造函数:第四节 构造函数的调用 《C++是很危险的》中的代码全部来自网络及各种C++相关的书籍。 目的不是为了谴责C++,而是希望大家注意C++中的某些细节。 这些细节在实际工程中根本用不到,所以大家就当笑话看看就好。 以下代码输出什么? 操作系统:ubuntu linux 10.10 编译器:g++ 4.4.5 1、没有编译错误,能够正常运行。 2、答案是只输出一个3。 */ #include <iostream>&nb..
/* C++是很危险的:第一章 构造函数:第三节 构造函数与初始化列表 《C++是很危险的》中的代码全部来自网络及各种C++相关的书籍。 目的不是为了谴责C++,而是希望大家注意C++中的某些细节。 这些细节在实际工程中根本用不到,所以大家就当笑话看看就好。 以下代码会输出几次“Hello world!”? 操作系统:ubuntu linux 10.10 编译器:g++ 4.4.5 1、没有编译错误,能够正常运行。 2、答案是“Hello world!&rd..
/* C++是很危险的:第一章 构造函数:第二节 构造函数与多态 《C++是很危险的》中的代码全部来自网络及各种C++相关的书籍。 目的不是为了谴责C++,而是希望大家注意C++中的某些细节。 这些细节在实际工程中根本用不到,所以大家就当笑话看看就好。 以下代码会输出什么? 操作系统:ubuntu linux 10.10 编译器:g++ 4.4.5 1、没有编译错误,能够正常运行。 2、答案是3。 附注:Java在构造函数与多态这个问题上与C++采取了两种完全..
/* C++是很危险的:第一章 构造函数:第一节 《C++是很危险的》中的代码全部来自网络及各种C++相关的书籍。 目的不是为了谴责C++,而是希望大家注意C++中的某些细节。 这些细节在实际工程中根本用不到,所以大家就当笑话看看就好。 以下代码会输出什么? 操作系统:ubuntu linux 10.10 编译器:g++ 4.4.5 1、没有编译错误,能够正常运行。 2、答案是3。 */ #include <iostream> using namespace std;&..
《gcc五分钟系列》基础部分结束
我把常用的编译选项都已经介绍完了。
本系列打算休息一段时间。
《gcc五分钟系列》第十五节:预编译期选项(二):D
一般我们在开发项目时,都会做两个版本,一个debug版,一个release版。
通常我们在debug版本中会加入调试输出,而在release版本中,删除这些输出。
实现的方式是通过宏。
以一个简单的函数为例,这个函数仅仅输出参数的值。但在debug版本中,输出一些多余的信息,比如函数名。
#define __DEBUG__ void output(int a){ #ifdef __DEBUG__&nbs..
《gcc五分钟系列》第十四节:预编译期选项(一)——I
相信大家对include指令有所了解,相信能够区别引号和尖括号的作用。
简单来说,
(1)引号的作用:先在当前目录下搜索文件,然后在系统目录下搜索文件。
(2)尖括号的作用:仅在系统目录下搜索文件。
但是,如果大家做过Qt的开发,就会发现:
(1)包含一个Qt库的头文件时,需要用尖括号即可。
&nb..
《gcc五分钟系列》第十三节:编译期优化选项(四)——W
优秀的程序员不应该忽略任何的warning。
优秀的程序员写的代码不但没有error,还没有warning。
先看第一段代码:
//return-type.cpp int fun(){ } int main(){ fun(); }
很简单,对吧?
有错误吗?事实上是没有的。
编译一下:g++ return-type.c..
《gcc五分钟系列》第十二节:编译期优化选项(三)——O(下)
这节内容有些无聊,只是把O选项相关的文档翻译出来。想了解的可以了解下,想深入了解的可以去看gcc的man手册。
括号里面的是我自己的想法,剩下的是gcc的man手册中关于O选项的翻译。
-O
-O1 优化。优化编译将多花费一些时间,还会在编译大函数的时候消耗更多的内存。
加上-O选项以后,编译器试图减少..