我们知道在windows平台下面很多的文件后缀名中都含有Afx,其实Afx是微软公司的一个技术研发团队名称,vc下的“stdAfx.h”和“stdAfx.cpp”文件就是有他们所研发出来的,为什么要这么做呢,原因是当我们在一个工程下面建立多个头文件和源文件并且这些头文件和源文件 都包含了系统(比如windows.h)文件时那么在编译阶段就会发生非常庞大的代码展开(因为系统文件一般都比较庞大)在这些每一个包含了系统文件的头文件和源文件中去多次展开无疑是效率上的灾难,那么有没有办法只进行一次展开呢,…
这一章节介绍的全是VC编译器选项,option参数是cl.exe的编译选项,是cl.exe命令行参数中最复杂.也是最常用的.下面介绍一些常用的编译选项: 1.代码生成有关 这些选项将影响编译完成后生成的机器代码: 2.调试有关 与调试有关的编译选项如下图,/Z7./Zi./ZI这三个选项是对程序进行调试时所必需的选项,同时注意,在生成调试版本的程序时,需要指定/Od选项以禁用优化: 3.程序优化有关 与程序优化有关的选项如下图,优化选项将影响编译器对代码的优化,最选择代码体积最小还是选择运行速度…
在不装VS的情况下为qtcreator添加VC编译器和调试器 首先假设在D盘有VC6,VC2002,VC2003,VC2005,VC2008,VC2010,VC2013等绿色版的VC编译器,编译器的的目录下有bin,lib,include目录和PlatformSDK目录,情况大概是这样的: 然后比如在D:/VC2002/bin下要有SetEnv.cmd文件,文件内容是这样子的: @echo offset QMAKESPEC=win32-msvc2002set PATH=D:\vc2002\bin…
如何在VC6.0下用pthread.h这个头文件   1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可) http://sourceware.org/pthreads-win32/,解压到一个目录. 2.找到include和lib文件夹,下面分别把它们添加到VC++6.0的头文件路径和静态链接库路径下面: a).Tools->Options,选择Directory页面,然后在Show directories for:中选…
关于信号和槽有一个非常精炼的C++实现,作者是Sarah Thompson,该实现只有一个头文件sigslot.h,跨平台且线程安全. 源码在:http://sigslot.cvs.sourceforge.net/viewvc/sigslot/sigslot/sigslot.h?revision=1.1.1.1&content-type=text%2Fplain 在WebRTC中,sigslot .h是其基础的事件处理框架, 在多个模块的消息通知,响应处理中被使用. sigslot.h的使用方法…
linux 下各个头文件的作用   2.6.30.4的头文件的位置和2.6.25.8的不一样,除去内核源码下的include目录外, 在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目录下都有include目录的. #include <linux/kernel.h> // printk() #include <linux/slab.h> // kmalloc() #include <linux/fs.h>   // file_…
把文件分成头文件和源文件完全是为了方便扩展和组织程序 这么说吧 我们可能会自定义很多函数 而这些函数分别会在不同的地方被调用 甚至有些时候我们需要把一堆函数打包起来一起调用 比如#include "stdio.h" 的意思就是告诉系统 我要用输入输出函数包(stdio.h打包了各种各样的输入输出函数). 说说具体的吧 为了方便函数可以独立的被任何地方调用 我们会把每一个函数的定义代码都写成一个cpp 这个叫做函数的代码文件 并且此cpp的文件名以此函数名来命名 同时 我们会建立一个文件…
C/C++每个头文件的功能说明 传统 C++ #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 #include <float.h> //浮点数处理 #include <fstream.h> //文件输入/输出 #include <iomanip.h> //参数化输入/输出 #include <iostream.h&g…
cl.exe的功能是将源代码文件编译为可提供链接器使用的obj对象文件.cl.exe命令行参数形式如下: CL (option...) file... [option | file]... [lib...] [@command-file] [/link link-opt...] 各命令行参数的意义如下 : 1.option 命令行中的"option"是指一个或多个编译选项.在指定选项时,需要在选项前加正斜杠(/)或一个短划线(-).有一些选项还会带有参数,使用":"…
转自:http://blog.csdn.net/sptoor/article/details/6203376 很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇. 如果你使用的作业系统是 Linux.Mac 或其他非 Windows 平台,你可以忽略这篇文章:如果你使用的作业系统是 Windows 平台,但没有用 Microsoft Visual Studio C++(以下简称为 MSVC)软体撰写 C++…
Visual Studio version and discrimination macros Abbreviation Product name [Visual Studio version] †1 VC ++ version †2 _MSC_VER _MSC_FULL_VER 2019 Visual Studio 2019 version 16.0.0 14.20 1920 192027508 2017 Update 9 Visual Studio 2017 version 15.9.11…
基本知识,7/2 和 6/2 在计算机中的商都为3.C语言的除法不等同于数学意义中的除法. C语言的除法.采用向零取整的方法. -______________0_______________+ 只有在除数为常量的情况下.编译器才会出现优化. 1.除数为正数,2的幂的除法 #include "stdafx.h" int main(int argc, char* argv[]) { int iNum = argc; printf(); printf(); ; } 对应Release版本的反…
本篇将平时遇到的一些编译错误 , 记录于此 , 同时帖上分析…
使用标准输入输出库函数时要用到 “stdio.h”文件,因此源文件开头应有以下预编译命令: #include<stdio.h> stdio是standard input&outupt的意思. 有时候我们也会看到: #include"string.h" 那么#include "stdio.h" 与#include<stdio.h>有什么区别呢? #include   "stdio.h " 当要调用某个函数时先在用户自…
在网上看到类似的问题,查找资料找到了解决方案,现整理如下,有些更改,好让自己多些印象,附原文网址:http://blog.csdn.net/bigloomy/article/details/6226530 本人使用的是vs2012,编写一个简单的opengl程序,运行的时候总是提示: fatal error C1083: 无法打开包括文件:"GL/glut.h": No such file or directory 这个时候就要进行相应的如下操作: 1.下载GLUT工具包,参考网址:h…
1. 一个类: 头文件用于保存类的声明:定义文件保存类的实现.   2. 分离编译模式: 允许在一个编译单元(.cpp文件)中定义函数.类型.类对象等,然后在另一个编译单元中引用它们.编译器处理完所有的编译单元后,链接器接下来会处理所有指向extern符号的引用(有时为缺省),从而生成单一可执行文件.   3. 模板类型: 模板类型不是一种实类型,它必须等到类型绑定后才能确定最终类型,所以在实例化一个模板时,必须要能够让编译器“看到”在哪里使用了模板,而且必须看到模板确切的定义,而不仅仅是它们的…
今天用VS 2017编译一个以前的VC++动态库项目,出现了一个链接器问题: LNK1104 无法打开文件"libcmtd.lib" . 操作系统版本为:Windows 10 18362.145. VS版本为:VS 2017 15.9.12. 步骤如下: 1.在项目上点击右键,选择[属性],然后选择[链接器],选择[常规],找到[附加库目录],然后在VS的安装目录中找到libcmtd.lib所在目录,有两个目录,一个是x86,一个是x64,然后添加合适的一个,我的目录是[C:\Prog…
来自百度~stdafx.h中没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行. Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作.由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了. 为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示: ◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文…
转载:http://www.cnblogs.com/chenkunyun/archive/2012/03/24/2415727.html 方法一. //遍历文件夹函数 void TraverseFolder(LPCTSTR lpPath) { TCHAR szFind[MAX_PATH] = {_T("\0")}; WIN32_FIND_DATA findFileData; BOOL bRet; _tcscpy_s(szFind, MAX_PATH, lpPath); _tcscat_…
Visual Studio开发C++,工程的空间几M,几十M甚至几百M的长,生成的中间文件看的眼花缭乱,占空间不说,特别是备份拷贝代码时无奈的等待,有了这个脚本,好吧,整个世界清静了. @echo off echo ---------------------------------------------------------------- echo * Visual C++ * echo * 清理Visual Studio工程中不需要的文件 * echo * 保存成.bat文件放置在工程目录…
常规的获得小文件(2.1GB以下)的字节大小可以使用ftell,函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数.使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置.因为ftell返回long型,根据long型的取值范围-231~231-1(-2147483648-2147483647),故对大于2.1G的文件进行操作时出错.ftell一般用于读取文件的长度,一般的使用方法如下: #include <stdio.h> main() { FILE…
1 如下图所示,VS中不支持iostream.h和fstream.h的说法   2 改成下面三行就可以编译通过了 #include<iostream> #include <fstream> using namespace std;            …
今天安装了vs2019,而后又安装了wdk,随便写了一个控制台测试程序,居然报错.网上也查了一圈,也没有得到解决.报错内容如下: MSB8038:已启用Spectre缓解,但找不到Spectre缓解库.验证Visual Studio工作负荷包括Spectre缓解库. LNK1104:无法打开文件"msvcprtd.lib". 截图如下: 看了报错,应该是缺少msvcprtd.lib这个文件或者路径错了.打开vs设置,查看一下库路径.发现$(VC_LibraryPath_x86)宏对应的…
访问目录文件夹下的文件是经常需要的操作,C/C++和win32接口都没有提供直接调用的函数.在这里总结了几个经常用到的函数,通过MFC的CFileFind函数递归遍历实现,包括以下几个功能函数: 查找目录下所有的文件夹: 查找目录下所有的文件(不遍历目录的目录): 查找目录下所有的文件(遍历目录的目录) : 查找目录下某一类型文件 (不遍历目录的目录): 查找目录下某一类型文件 (遍历目录的目录): //查找目录下所有的文件夹 void FindFolder(string dir, vector…
说明: 1.以下封装了4个函数_CopyFile,_DeleteFile,_MoveFile,_ReNameFile 2.每个函数都先拷贝了原来的路径,保证了路径是以2个\0\0结尾.(如果不以2个\0\0结尾,往往会出错) 3.对于文件或文件夹都适用 /*能产生对话框的标志:FOF_SILENT             //progress dialog            FOF_RENAMEONCOLLISION //replace dialogFOF_NOCONFIRMATION   …
一个简单的显示驱动实例windows wdk 7600的 mirror(镜像) 显示驱动部分基本流程:Windows 2000 DDK包含了一个例子镜像驱动程序,在 上面3个目录中包括了组件源文件.目录    包含的源文件Video\displays\mirror\dll    镜像驱动程序Video\miniport\mirror    微端口驱动程序Video\displays\mirror\app    用户模式服务.也包含mirror.inf.打开disp文件夹 C:\WinDDK\76…
C++遵循先定义,后使用的原则.就拿函数的使用来举例吧. 我看过有些人喜欢这样写函数. #include<iostream> using namespace std; int add(int x, int y) //A { return x + y; } int main() { , ); //B system("pause"); ; } 但我更偏向下面这种. #include<iostream> using namespace std; int add(int…
今天用QT编译生成的共享库自己却怎么都不能调用,查了N久后找到这个帖子,发现搞定了,记录一下 http://qiusuoge.com/12720.html Qt如何调用VC++生成的动态链接库?假设当前有VC++编译器生成的动态库文件testdll.h,testdll.lib和testdll.dll. testdll.h文件源码如下: #ifdef TESTDLL_EXPORTS #define TESTDLL_API __declspec(dllexport) #else #define TE…
一.使用默认的预编译头       要使用预编译头,我们必须指定一个头文件,这个头文件包含我们不会经常改变的代码和其他的头文件,然后我们用这个头文件来生成一个预编译头文件(.pch文件),想必大家都知道 StdAfx.h这个文件.很多人都认为这是VC提供的一个“系统级别”的,编译器带的一个头文件.其实不是的,这个文件可以是任何名字的.我们来考察一个典型的由AppWizard生成的MFC Dialog Based 程序的预编译头文件.(因为AppWizard会为我们指定好如何使用预编译头文件,默认…
Qt如何调用VC++生成的动态链接库?假设当前有VC++编译器生成的动态库文件testdll.h,testdll.lib和testdll.dll. testdll.h文件源码如下: #ifdef TESTDLL_EXPORTS#define TESTDLL_API __declspec(dllexport)#else#define TESTDLL_API __declspec(dllimport)#endif// 此类是从 testdll.dll 导出的class TESTDLL_API Cte…