<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://itecfun.com/extern.php?action=feed&amp;fid=55&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[个人知识管理站 / C/C++]]></title>
		<link>http://www.itecfun.com/index.php</link>
		<description><![CDATA[个人知识管理站 最近发表的主题。]]></description>
		<lastBuildDate>Sat, 28 Apr 2018 03:12:50 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[Qt Creator 的编译 真的慢吗]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3332&amp;action=new</link>
			<description><![CDATA[<p>姚冬<br />程序员、编程、C++ 话题的优秀回答者<br />721 人赞同了该回答<br />我是来反对楼上某些答案的。<br />我曾经用MFC写了金山词霸（大约20多万行），又用Qt写了YY语音（大约100多万行），算是对两种框架都比较有经验。<br />纠正几个错误的认识。</p><p>1. “用Qt写的程序编译比MFC慢”的说法是错误的<br />绝对错误，单位代码行数编译Qt远比MFC快得多，因为Qt库的头文件设计非常好，尽量都使用了前置声明，避免了头文件嵌套，几乎所有类都使用了公有类和私有类的设计，把没必要公开的声明放到私有头文件里，避免了编译时引入过多代码。而MFC没有这样的设计。<br />至于大家感觉MFC快主要原因是MFC工程默认打开了编译预处理头文件（PCH），但是这是VC编译器的特性，所有C++程序都可以用，不是MFC特有，Qt也可以使用 PCH<br />方法很简单，在你的 .pro 文件中加入一行<br />PRECOMPILED_HEADER = stable.h<br />指定 Stable.h这个头文件作为编译预处理文件，MFC里这个文件一般叫stdafx.h<br />然后在 stable.h里 包含你所用到的所有 Qt 头文件，如果你用了很多qt的类可以直接包含所有<br />比如 ：<br />#include&#160; &lt;QtCore&gt;<br />#include &lt;QtGui&gt;<br />这两个文件里又包含了几乎所有Qt常用类<br />不用担心，即使包含了所有头文件也没关系，有了PCH再多头文件也没影响。</p><p>如果你还想编译再快点，可以在 .pro里加入下面一行<br />QMAKE_CXXFLAGS += /MP<br />指定/mp编译选项，编译器将使用并行编译，同时起多个编译进程并行编译不同的cpp</p><p>而且QT这种引入PCH的方法比MFC的好，由于MFC的PCH选项是每个工程逐个指定的，很容易被某些人搞坏，我曾经无数次修复PCH问题，但是Qt的选项是写在.pro里的，写一次就永远不会错。<br />MFC一旦弄坏了PCH，编译也慢得令人发指。</p><p>给个参考时间吧，YY最新版本大约 100多万行C++代码，rebuild debug和releae总共需要20多分钟，机器是i5 四核SSD硬盘。其实对于大项目硬盘才是瓶颈，如果换机械硬盘要慢差不多70%，有个同事用10G内存做了个内存盘编译，还能快30%。</p><p>如果你比这个慢，请检查自己的代码问题。</p><p>2. “QT本身编译慢”的说法是错的<br />Qt本身其实编译并不慢，慢的是webkit库和例子程序，你如果不改任何选项默认是会编译所有的，webkit本身就是个恐龙级项目，用了太多泛型技术，编译非常慢。另外Qt里附带了数百个例子工程，都编译一边也很慢。如果仅编译QT核心库是很快的，比如QtCore只需要1分钟，QtGui大约5分钟。</p><p>送个福利（仅限windows vc＋＋ 2008）：<br />configure.exe -qt-libjpeg -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -no-libtiff -no-libmng -nomake examples -nomake demos -no-webkit -nomake doc -no-plugin-manifests -no-exceptions -no-rtti -no-qt3support -no-openssl -no-opengl -no-multimedia -no-3dnow -no-native-gestures -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -no-sql-sqlite -no-dbus -platform win32-msvc2008</p><p>这是我自己用的Qt编译前的配置命令行，把我自己用不到的都去掉了，这样配置编译就快很多了。<br />我把 webkit examples demos 等大家伙都去掉了。如果你真的需要这些，可以安装Qt sdk里面有编译好的版本。</p><p>补充：Qt creator只是IDE，不是编译器，编译慢真的不关他的事，要看你具体用的编译器是什么。一般来说在Windows下就是minGW，也就是一个移植版本的GCC，的确是不如VC++里的CL快的。<br />如果是其它平台，那么编译器可以换成LLVM的clang，那就快很多了。<br />在Windows下来是用VC++吧，推荐VC2008，Qt和VC的IDE结合非常好，我现在的项目都是用VC2008+QT的，开发效率很高，记得装Visual Assist哦。<br />qmake -tp vc<br />可以用 .pro生产 .vcproj的VC工程文件，可以用VC++打开编译。<br />编辑于 2014-03-21</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Sat, 28 Apr 2018 03:12:50 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3332&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[无法解析的外部符号 __imp__AlphaBlend@44，该符号在函数 _WndProc@16]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3167&amp;action=new</link>
			<description><![CDATA[<p>当使用malloc提示找不到标识符时?<br />解决方法：加上 #include &quot;malloc.h&quot;</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Fri, 19 Jun 2015 01:42:41 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3167&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[vs2012 error c4996: This function or variable may be unsafe]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3166&amp;action=new</link>
			<description><![CDATA[<p>使用vs2012，遇到如下错误。</p><p>error C4996: &#039;fopen&#039;: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.&#160; &#160; e:\myprojects\c\easypr\src\mywin32\win32app.cpp&#160; &#160; 328&#160; &#160; 1&#160; &#160; myWin32</p><p> </p><p>解决方案，项目 -&gt;属性 -&gt; c/c++ -&gt; 预处理器 -&gt; 点击预处理器定义，编辑，加入_CRT_SECURE_NO_WARNINGS，即可。</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Fri, 19 Jun 2015 00:36:49 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3166&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Windows API 摘记]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3165&amp;action=new</link>
			<description><![CDATA[<p><strong>虚拟键代码</strong><br />&#160; 虚拟键代码存储在WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP消息的wParam参数中, 常用的虚拟键代码如下:</p><p>常用的虚拟键代码如下:</p><p>十进制&#160; &#160; 十六进制&#160; &#160; &#160; &#160; WINUSER.H中的标识符&#160; &#160; &#160; &#160; 是否必须&#160; &#160; &#160; &#160; IBM兼容键盘&#160; &#160;&#160; &#160; &#160;&#160; <br />1&#160; &#160; &#160; &#160; &#160; &#160; 1&#160; &#160; &#160; &#160; VK_LBUTTON&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 鼠标左键&#160; &#160;&#160; &#160; &#160;&#160; <br />2&#160; &#160; &#160; &#160; &#160; &#160; 2&#160; &#160; &#160; &#160; VK_RBUTTON&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 鼠标右键&#160; &#160;&#160; &#160; &#160;&#160; <br />3&#160; &#160; &#160; &#160; &#160; &#160; 3&#160; &#160; &#160; &#160; VK_CANCEL&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Ctrl + Break&#160; &#160;&#160; &#160; &#160;&#160; <br />4&#160; &#160; &#160; &#160; &#160; &#160; 4&#160; &#160; &#160; &#160; VK_MBUTTON&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 鼠标中键&#160; &#160;&#160; &#160; &#160;&#160; <br />8&#160; &#160; &#160; &#160; &#160; &#160; 8&#160; &#160; &#160; &#160; VK_BACK&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 退格键&#160; &#160;&#160; &#160; &#160;&#160; <br />9&#160; &#160; &#160; &#160; &#160; &#160; 9&#160; &#160; &#160; &#160; VK_TAB&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Tab键&#160; &#160;&#160; &#160; &#160;&#160; <br />12&#160; &#160; &#160; &#160; &#160; &#160; C&#160; &#160; &#160; &#160; VK_CLEAR&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Clear键&#160; &#160;&#160; &#160; &#160;&#160; <br />13&#160; &#160; &#160; &#160; &#160; &#160; D&#160; &#160; &#160; &#160; VK_RETURN&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 回车键(任意一个)&#160; &#160;&#160; &#160; &#160;&#160; <br />16&#160; &#160; &#160; &#160; &#160; &#160; 10&#160; &#160; &#160; &#160; VK_SHIFT&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Shift键(任意一个)&#160; &#160;&#160; &#160; &#160;&#160; <br />17&#160; &#160; &#160; &#160; &#160; &#160; 11&#160; &#160; &#160; &#160; VK_CONTROL&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Ctr键(任意一个)&#160; &#160;&#160; &#160; &#160;&#160; <br />18&#160; &#160; &#160; &#160; &#160; &#160; 12&#160; &#160; &#160; &#160; VK_MENU&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Alt键(任意一个)&#160; &#160;&#160; &#160; &#160;&#160; <br />19&#160; &#160; &#160; &#160; &#160; &#160; 13&#160; &#160; &#160; &#160; VK_PAUSE&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; &#160; &#160; Pause键&#160; &#160;&#160; &#160; &#160;&#160; <br />20&#160; &#160; &#160; &#160; &#160; &#160; 14&#160; &#160; &#160; &#160; VK_CAPITAL&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 大写锁定键&#160; &#160;&#160; &#160; &#160;&#160; <br />27&#160; &#160; &#160; &#160; &#160; &#160; 1B&#160; &#160; &#160; &#160; VK_ESCAPE&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Esc键&#160; &#160;&#160; &#160; &#160;&#160; <br />32&#160; &#160; &#160; &#160; &#160; &#160; 20&#160; &#160; &#160; &#160; VK_SPACE&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 空格键&#160; &#160;&#160; &#160; &#160;&#160; <br />33&#160; &#160; &#160; &#160; &#160; &#160; 21&#160; &#160; &#160; &#160; VK_PRIOR&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; PageUp键&#160; &#160;&#160; &#160; &#160;&#160; <br />34&#160; &#160; &#160; &#160; &#160; &#160; 22&#160; &#160; &#160; &#160; VK_NEXT&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; PageDown键&#160; &#160;&#160; &#160; &#160;&#160; <br />35&#160; &#160; &#160; &#160; &#160; &#160; 23&#160; &#160; &#160; &#160; VK_END&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; End键&#160; &#160;&#160; &#160; &#160;&#160; <br />36&#160; &#160; &#160; &#160; &#160; &#160; 24&#160; &#160; &#160; &#160; VK_HOME&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; HOME键&#160; &#160;&#160; &#160; &#160;&#160; <br />37&#160; &#160; &#160; &#160; &#160; &#160; 25&#160; &#160; &#160; &#160; VK_LEFT&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 左箭头&#160; &#160;&#160; &#160; &#160;&#160; <br />38&#160; &#160; &#160; &#160; &#160; &#160; 26&#160; &#160; &#160; &#160; VK_UP&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 上箭头&#160; &#160;&#160; &#160; &#160;&#160; <br />39&#160; &#160; &#160; &#160; &#160; &#160; 27&#160; &#160; &#160; &#160; VK_RIGHT&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 右键头&#160; &#160;&#160; &#160; &#160;&#160; <br />40&#160; &#160; &#160; &#160; &#160; &#160; 28&#160; &#160; &#160; &#160; VK_DOWN&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 下箭头&#160; &#160;&#160; &#160; &#160;&#160; <br />41&#160; &#160; &#160; &#160; &#160; &#160; 29&#160; &#160; &#160; &#160; VK_SELECT&#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; <br />42&#160; &#160; &#160; &#160; &#160; &#160; 2A&#160; &#160; &#160; &#160; VK_PAINT&#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; <br />43&#160; &#160; &#160; &#160; &#160; &#160; 2B&#160; &#160; &#160; &#160; VK_EXECUTE&#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; <br />44&#160; &#160; &#160; &#160; &#160; &#160; 2C&#160; &#160; &#160; &#160; VK_SNAPSHOT&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Paint Screen键&#160; &#160;&#160; &#160; &#160;&#160; <br />45&#160; &#160; &#160; &#160; &#160; &#160; 2D&#160; &#160; &#160; &#160; VK_INSERT&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Insert键&#160; &#160;&#160; &#160; &#160;&#160; <br />46&#160; &#160; &#160; &#160; &#160; &#160; 2E&#160; &#160; &#160; &#160; VK_DELETE&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; Del键&#160; &#160;&#160; &#160; &#160;&#160; <br />47&#160; &#160; &#160; &#160; &#160; &#160; 2F&#160; &#160; &#160; &#160; VK_HELP&#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; <br />48 - 57&#160; &#160; &#160; &#160; 30 - 39&#160; &#160; 无&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 主键盘上的0到9&#160; &#160;&#160; &#160; &#160;&#160; <br />65 - 90&#160; &#160; &#160; &#160; 41 - 5A&#160; &#160; 无&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; A - Z&#160; &#160;&#160; &#160; &#160;&#160; <br />91&#160; &#160; &#160; &#160; &#160; &#160; 5B&#160; &#160; &#160; &#160; VK_LWIN&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; &#160; &#160; 左Windows键&#160; &#160;&#160; &#160; &#160;&#160; <br />92&#160; &#160; &#160; &#160; &#160; &#160; 5C&#160; &#160; &#160; &#160; VK_RWIN&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 右Windows键&#160; &#160;&#160; &#160; &#160;&#160; <br />93&#160; &#160; &#160; &#160; &#160; &#160; 5D&#160; &#160; &#160; &#160; VK_APPS&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Applicatin键&#160; &#160;&#160; &#160; &#160;&#160; <br /> &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; <br />96 - 105&#160; &#160; 60 - 69&#160; &#160; VK_NUMPAD0 - VK_NUMPAD9&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; 小键盘区的0 - 9&#160; &#160;&#160; &#160; &#160;&#160; <br />106&#160; &#160; &#160; &#160; &#160; &#160; 6A&#160; &#160; &#160; &#160; VK_MULTIPLY&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 小键盘区的*&#160; &#160;&#160; &#160; &#160;&#160; <br />107&#160; &#160; &#160; &#160; &#160; &#160; 6B&#160; &#160; &#160; &#160; VK_ADD&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 小键盘区的+&#160; &#160;&#160; &#160; &#160;&#160; <br />108&#160; &#160; &#160; &#160; &#160; &#160; 6C&#160; &#160; &#160; &#160; VK_SEPARATOR&#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; &#160; &#160;&#160; <br />109&#160; &#160; &#160; &#160; &#160; &#160; 6D&#160; &#160; &#160; &#160; VK_SUBTRACT&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 小键盘区的-&#160; &#160;&#160; &#160; &#160;&#160; <br />110&#160; &#160; &#160; &#160; &#160; &#160; 6E&#160; &#160; &#160; &#160; VK_DECIMAL&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 小键盘区的.&#160; &#160;&#160; &#160; &#160;&#160; <br />111&#160; &#160; &#160; &#160; &#160; &#160; 6F&#160; &#160; &#160; &#160; VK_DIVIDE&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 小键盘区的/&#160; &#160;&#160; &#160; &#160;&#160; <br />112 - 121&#160; &#160; 70 - 79&#160; &#160; VK_F1 - VK_F10&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; √&#160; &#160; &#160; &#160; 功能键F1 - F10&#160; &#160;&#160; &#160; &#160;&#160; <br />122 - 135&#160; &#160; 7A- 79&#160; &#160; VK_F11 - VK_F24&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 功能键F11 - F24&#160; &#160;&#160; &#160; &#160;&#160; <br />144&#160; &#160; &#160; &#160; &#160; &#160; 90&#160; &#160; &#160; &#160; VK_NUMLOCK&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 数字锁定键&#160; &#160;&#160; &#160; &#160;&#160; <br />145&#160; &#160; &#160; &#160; &#160; &#160; 91&#160; &#160; &#160; &#160; VK_SCROLL&#160; &#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Scroll Lock键</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Wed, 17 Jun 2015 09:50:44 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3165&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[warning C4996: 'strcpy': This function or variable may be unsafe. Cons]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3163&amp;action=new</link>
			<description><![CDATA[<p>使用VS2005以上版本（VS2005、VS2008、VS2010）编译在其他编译器下正常通过的C语言程序，你可能会遇到类似如下的警告提示：<br /> 引用内容<br />warning C4996: &#039;strcpy&#039;: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.<br />1&gt;&#160; &#160; &#160; &#160; &#160; c:/program files/microsoft visual studio 10.0/vc/include/string.h(105) : 参见“strcpy”的声明<br />warning C4996: &#039;fopen&#039;: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.<br />1&gt;&#160; &#160; &#160; &#160; &#160; c:/program files/microsoft visual studio 10.0/vc/include/stdio.h(234) : 参见“fopen”的声明<br />原因解释<br />这种微软的警告，主要因为那些C库的函数，很多函数内部是不进行参数检测的（包括越界类的），微软担心使用这些会造成内存异常，所以就改写了同样功能的函数，改写了的函数进行了参数的检测，使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆，因为编译器对于每个函数在给出警告时，都会告诉你相应的安全函数，查看警告信息就可以获知，在使用时也再查看一下MSDN详细了解。库函数改写例子：<br />mkdir改写为 _mkdir <br />fopen”改写为 fopen_s <br />stricmp改写为 stricmp_s<br />strcpy改写为strcpy_s</p><p>&#160; &#160; 解决方案：<br />1&gt; 根据下面的warning提示：参见“fopen”的声明<br />&#160; &#160; &#160; &#160; 消息:“This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”<br />&#160; &#160; &#160; &#160; 所以可以将函数按warning提示的第二句，改为使用fopen_s函数即可：<br />&#160; &#160; &#160; &#160; 例如:FILE *pFile=fopen(&quot;1.txt&quot;, &quot;w&quot;);<br />&#160; &#160; &#160; &#160; &#160; &#160;改为：<br />&#160; &#160; &#160; &#160; &#160; &#160;FILE* pFile;<br />&#160; &#160; &#160; &#160; &#160; &#160;fopen_s(&amp;pFile, &quot;1.txt&quot;, &quot;w&quot;); <br />2&gt; 还是根据warning提示的地三句话:use _CRT_SECURE_NO_DEPRECATE<br />&#160; &#160; &#160; &#160; 项目|属性|配置属性|C/C++|命令行|附加选项,加入【/D &quot;_CRT_SECURE_NO_DEPRECATE&quot; 】(注：加入中括号中完整的内容)<br />3&gt; 降低警告级别：项目|属性|配置属性|C/C++|常规,自己根据情况降低警告级别（此法不推荐）<br />&#160; &#160; 注意：高度重视警告：使用编译器的最高警告级别。应该要求构建是干净利落的（没有警告）。理解所有警告。通过 修改代码而不是降低警告级别来排除警告。<br />&#160; &#160; 编译器是你的朋友。如果它对某个构造发出警告，这经常是说明你的代码中存在潜在的问题。成功的构建应该是无声无息的（没有警告的）。【《C++编程规 范》】</p><br /><p>通过修改配置，第2中方法可以用</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Mon, 15 Jun 2015 10:08:32 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3163&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[EasyPR是一个中文的开源车牌识别系统]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3162&amp;action=new</link>
			<description><![CDATA[<p><a href="http://git.oschina.net/easypr/EasyPR#windows" rel="nofollow">原文</a></p><p>EasyPR是一个中文的开源车牌识别系统，其目标是成为一个简单、高效、准确的车牌识别引擎。 相比于其他的车牌识别系统，EasyPR有如下特点： * 它基于openCV这个开源库。这意味着你可以获取全部源代码，并且移植到java等平台。 * 它能够识别中文。例如车牌为苏EUK722的图片，它可以准确地输出std:string类型的&quot;苏EUK722&quot;的结果。 * 它的识别率较高。图片清晰情况下，车牌检测与字符识别可以达到90%以上的精度。</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Fri, 12 Jun 2015 07:39:28 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3162&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3161&amp;action=new</link>
			<description><![CDATA[<p><a href="http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html" rel="nofollow">link</a></p><p>2012年4月给同学写了篇傻瓜式的 VS2010+Opencv-2.4.0的配置攻略 结果没有想到，点击量一路飙升，固定在了Google “Opencv 配置” 关键词搜索的榜首。现在看看，已经过时了，版本升级后看不到ttb了，还有很多不足的地方需要修正。新电脑需要重新配置环境，结合新版本，再来写篇最完美的傻瓜教程，看能不能超过以前的那篇 <img src="http://www.itecfun.com/img/smilies/smile.png" width="15" height="15" alt="smile" /></p><p>环境：Windows 8.1, Opencv 2.4.8, VS 2013.</p><p>参考该博客配置成功，我的环境：windows2008serverR2,Opencv 2.4.10,VS 2010</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Fri, 12 Jun 2015 07:38:10 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3161&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[MinGW的安装参见：GNU 编译器工具 MinGW的安装与配置]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3153&amp;action=new</link>
			<description><![CDATA[<p>MinGW，是Minimalist GNU For Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合，允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。</p><p>MinGW，它是一些头文件和端口库的集合，该集合允许人们在没有第三方动态链接库的情况下使用 GCC 产生 Windows32 程序。</p><p>MinGW 官方地址：http://www.mingw.org/<br />官方在<a href="http://sourceforge.net/" rel="nofollow">SourceForge</a>下载地址：http://sourceforge.net/projects/mingw/<br />下载安装：（修改安装路径，建议为英文路径。）<br /><span class="postimg"><img src="http://www.xlbd.net/wp-content/uploads/2014/03/1639-1.jpg" alt="1639-1.jpg" /></span><br />下面是自动安装的过程。安装后出现界面：选择安装下面四个基本选项。<br /><span class="postimg"><img src="http://www.xlbd.net/wp-content/uploads/2014/03/1639-2.jpg" alt="1639-2.jpg" /></span><br />配置环境变量：在Path中最后加入：;D:\Program files\MinGW\bin以上面默认安装路径为例；<br /><span class="postimg"><img src="http://www.xlbd.net/wp-content/uploads/2014/03/1639-3.jpg" alt="1639-3.jpg" /></span><br />测试是否安装成功：打开cmd命令行，输入：gcc -v显示如下：说明安装成功。<br /><span class="postimg"><img src="http://www.xlbd.net/wp-content/uploads/2014/03/1639-4.jpg" alt="1639-4.jpg" /></span><br />到这里MinGW的安装就完成了。我们可以写个小程序测试下编译器。</p><p>出处：http://xlbd.net/xlbd/1639.html</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Wed, 03 Jun 2015 07:24:51 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3153&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Sublime Text 3 中实现编译C语言程序]]></title>
			<link>http://www.itecfun.com/viewtopic.php?id=3150&amp;action=new</link>
			<description><![CDATA[<p>【Sublime Text 3】 The text editer you fall in love with.</p><p>这篇文章来讨论下如何在Windows下使用Sublime Text 3编译C语言程序。</p><p>一直从事Linux系统下C语言开发，突然试着想找找新的编程方式。</p><p>试试能不能在Windows下开发并编译C语言程序。</p><p>自从我发现这款“神器”之后，我就觉得这款编辑器能有很大的潜力。</p><p>因为功能丰富的插件让Sublime Text更加便捷好用，更加Sexy。</p><p>1. 安装GNU</p><p>在Window下编译C语言程序，需要用到MinGW（Minimalist GNU for Windows）。</p><p>MinGW的安装参见：GNU 编译器工具 MinGW的安装与配置</p><p>2. 配置Sublime Text 3</p><p>配置编译命令<br />点击 Sublime Text 3 &gt;&gt; Tools &gt;&gt; Build System &gt;&gt; New Build System...</p><p>输入如下代码</p><div class="codebox"><pre><code>{
	&quot;cmd&quot;: [&quot;gcc&quot;,&quot;${file}&quot;,&quot;-o&quot;,&quot;${file_path}/${file_base_name}&quot;],
	&quot;file_regex&quot;:&quot;^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$&quot;,
	&quot;working_dir&quot;:&quot;${file_path}&quot;,
	&quot;selector&quot;:&quot;source.c&quot;,
	&quot;encoding&quot;:&quot;cp936&quot;,
	&quot;variants&quot;:
	[
		{
			&quot;name&quot;:&quot;Run&quot;,
			&quot;cmd&quot; :[&quot;cmd&quot;,&quot;/c&quot;,&quot;gcc&quot;,&quot;${file}&quot;,&quot;-o&quot;,&quot;${file_path}/${file_base_name}&quot;,&quot;&amp;&amp;&quot;,&quot;cmd&quot;,&quot;/c&quot;,&quot;${file_path}/${file_base_name}&quot;]
		},
		{
			&quot;name&quot;:&quot;RunInCommand&quot;,
			&quot;cmd&quot; :[&quot;cmd&quot;,&quot;/c&quot;,&quot;gcc&quot;,&quot;${file}&quot;,&quot;-o&quot;,&quot;${file_path}/${file_base_name}&quot;,&quot;&amp;&amp;&quot;,&quot;start&quot;,&quot;cmd&quot;,&quot;/c&quot;,&quot;${file_path}/${file_base_name} &amp;&amp; pause&quot;]
		}
	]

}</code></pre></div><p>保存文件名为：GCC_Complier.sublime-build</p><p>配置快捷键：编译之后在CMD中运行<br />点击Sublime Text 3 &gt;&gt; Preferences &gt;&gt; Key Bindings -User<br />输入如下代码：</p><div class="codebox"><pre><code>[
	{&quot;keys&quot;:[&quot;ctrl+alt+shift+b&quot;],&quot;command&quot;:&quot;build&quot;,&quot;args&quot;:{&quot;variant&quot;:&quot;RunInCommand&quot;}}
]</code></pre></div><p>3. 编译测试程序</p><p>新建一个.c文件，例如：test.c</p><div class="codebox"><pre><code>#include &lt;stdio.h&gt;
int main()
{	
	printf(&quot;Hello world,I am here ground you ! \n&quot;); 

	scanf(&quot;Press any key continue ...&quot;);
}</code></pre></div><p>执行<strong> Ctrl + B【Build】</strong>命令，进行编译。可以看到控制台显示如下：<br />[Finished in 0.5s]</p><p>执行 <strong>Ctrl + Shift + B【Run】</strong>命令，编译并执行。可以看到控制台显示如下：<br />Hello world,I am here ground you !<br />[Finished in 0.9s]<br />执行<strong> Ctrl + Shift + Alt + B【RunInCommand】</strong>命令，编译并在CMD中执行命令行;<br />到此实现了在Sublime Text 3中编译C语言程序。Sublime Text 3还有很多功能等着我们去发觉和探讨。</p>]]></description>
			<author><![CDATA[dummy@example.com (xuyg)]]></author>
			<pubDate>Wed, 03 Jun 2015 07:22:33 +0000</pubDate>
			<guid>http://www.itecfun.com/viewtopic.php?id=3150&amp;action=new</guid>
		</item>
	</channel>
</rss>
