随笔分类 - C/C++/VS/Qt/Windows/Linux程序开发
摘要:C/C++函数调用约定关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的。VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调用方式,在 DLL 导出函数中,为了跟 Windows API 保持一致,建议使用 __stdcall 方式。调用约定跟堆栈清除密切相关。如果写一个汇编函数,给 C/C++ 调用,在 __cdecl 方式下,则汇编函数无需清除堆栈,在 __stdcall 方式下,汇编函数需要在返回(RET)之前恢复堆栈。C 语言有 __cdecl、__stdcall、__fastcall、na
阅读全文
摘要:#pragma预处理指令详解在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数。 (1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #
阅读全文
摘要:#pragma once与 #ifndef的区别转自:http://www.cppblog.com/szhoftuncun/archive/2011/12/29/35356.html为了避免同一个文件被include多次1#ifndef方式2#pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif方式二: #pragma once ... ... // 一些声明语句 #ifndef的方式
阅读全文
摘要:mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。 下面是一个小例子: class ClxTest
{ public: void Output() const;
}; void ...
阅读全文
摘要:过年了,事情可以暂时放一下了。总结一下很有必要。又看到外面饭馆写着“岁末收工,初六开炉“了。好了,废话不多说,接着上篇继续评点程序员常用工具。当然还得请朋友们留言,好做继续的整理和补充,谢谢!顺祝大家新年好!文中已经提供每个工具的超链接地址,请点击下载:1. IDE:钟情于VC++6.0,但是也感觉Visual Studio2008和2010的强大,可能迟早得转到VS高版本上来。在安装VC++6.0的时候记得安装sp6补丁和msdn(MSDN_1.5_精简安装版 )2. 辅助:(1)Visual Assist,喜欢它代码自动补全,快速注释,头文件源文件切换:VC_VA_X_1561(最适合VC
阅读全文
摘要:第一步:打开VS2010项目的SLN文件有如下代码: Microsoft Visual Studio Solution File, Format Version 11.00# Visual Studio 2010将之改为:Microsoft Visual Studio Solution File, Format Version 10.00# Visual Studio 2008第二步:打开VS2010项目的 .csproj和.csproj.user文件的开头会有如下代码:ToolsVersion="4.0" 将之改为:ToolsVersion="3.5"
阅读全文
摘要:让切换目录更方便: pushd,popd,dirs,cd -一,为何要使用这几个命令? 可能大家会有疑问,为何要使用这几个命令, 难道用cd不就可以切换目录了吗? 没错,使用cd就可以切换到需要访问的目录, 但是有时会是一个路径很长,层次很多的目录,进到此目录下后,这时我们不小心运行了 cd命令, 理所当然,我们回到了自己的home目录,这时如果想回去怎么办? 还有:因为工作的需要,我们需要不停在几个很深层的目录之间切换,不止一个, 那么即使有tab键帮忙,我们也会因为一个cd命令花费很多时间,如何在多个目录之间切换时能更方便些 pushd,popd是我们的好帮手 说明:pushd,popd,
阅读全文
摘要:转载地址:http://blog.csdn.net/charles_3081523/article/details/5765920很不错的一篇文章,对于基于 OpenCV 开发的应用打包发布时,可以参考文章中的两种方法,很不错!首先要明确在没有安装OpenCV的电脑上,要运行基于OpenCV库的程序,有两种方法:一、将OpenCv安装目录下的bin目录下的*.dll文件 与应用程序一起打包发布。二、将OpenCV库源代码加载到工程中和应用程序一起编译,也就是说最后生成的可执行文件可以单独运行,不需要OpenCV的动态链接库。下面将详细介 绍这种方法。首先要确定程序使用了OpenCV的哪些库函数
阅读全文
摘要:什么叫程序库所谓程序库,一般是软件作者为了发布方便、替换方便或二次开发目的,而发布的一组可以单独与应用程序进行compile time或runtime链接的二进制可重定位目标码文件。通俗一点说,所谓一个库,就是一个文件,这个文件可以在编译时由编译器直接链接到可执行程序中,也可以在运行时由操作系统的runtime enviroment根据需要动态加载到内存中。一组库,就形成了一个发布包,当然,具体发布多少个库,完全由库提供商自己决定。什么是lib,什么是dll,什么是.a,什么是.so,什么是静态库,什么是动态库所谓静态库,就是在静态编译时由编译器到指定目录寻找并且进行链接,一旦链接完成,最终的
阅读全文