C language
文章平均质量分 59
cherry_xidian
这个作者很懒,什么都没留下…
展开
-
(转)C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结构?转载 2011-02-25 10:47:00 · 361 阅读 · 0 评论 -
宏 undef
#undef #undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。 在此程序中,我们将取消在先前程序中对预处理器的定义。 #include转载 2011-06-27 14:51:00 · 641 阅读 · 0 评论 -
浅谈字节序(Endianness)
阅读文件格式文档的时候看到关于字节序(Byte Order)的要求:For values which span more than a single byte, the multiple byte ordering followed is that of the Big Endian / Motorola standard. The most significant byte转载 2011-06-23 11:20:00 · 866 阅读 · 1 评论 -
关于测试PC是big_endian/little_endian
早上写了一个简单的测试程序,没想到漏洞百出。记录下:void main(){ int i = 1; if ( *(char*)(&i)=1) { printf("little endian"); } else { printf("big endian"); } printf("*(char*)(&i) value is :%c",*(char*)(&i)); ge原创 2011-06-23 15:11:00 · 577 阅读 · 0 评论 -
sscanf()
<br /> sscanf() - 从一个字符串中读进与指定格式相符的数据. 编辑本段函数原型:<br /> Int sscanf( const char *, const char *, ...); <br /> int scanf( const char *, ...); 编辑本段头文件:<br />#include<stdio.h>编辑本段说明:<br />sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。 第一个参数可以是一个或多转载 2011-04-27 17:58:00 · 401 阅读 · 0 评论 -
vs2005设置
关于vs2005lib设置:原创 2011-06-08 18:43:00 · 106 阅读 · 0 评论 -
vc C2085 not in formal parameter list
<br />刚才帮人解决了一个vc编程的疑难杂症.确实值得记录一下.这个错很有味道.C2085 not in formal parameter list <br />错误号C2085,意思是出错变量不在形参列表中.行参列表,指的是函数声明或者定义的形参声明部分.出这个错,往往是因为出错位置或者此位置之前的一个函数的声明或者定义有语法错误.这次解决的这个疑难杂症是这样的.<br />涉及三个文件.<br />第一个文件, A.c<br />#include "B.h"<br />#include "C转载 2011-05-25 10:45:00 · 4203 阅读 · 2 评论 -
数字图像处理--BMP文件的读入和保存
<br />BMP文件是Windows系统标准图像文件格式,是一种将内存中的图像数据不经过压缩直接按位存盘的文件格式,所以被称为位图(bitmap),文件扩展名为BMP.<br /> <br />BMP文件被分为以下四个部分:位图文件头(Bitmap File Header),位图信息头(Bitmap Info Header),颜色表(Color Map)和位图数据。灰度图像和彩色图像是其中最主要的两种图片表现方式。灰度图像只表达图像的亮度信息而没有颜色信息,图像中每个像素点用一个量化的离散数值表示其灰度级转载 2011-03-25 15:54:00 · 4064 阅读 · 0 评论 -
error C2275: 'FILE' : illegal use of this type as an expression
<br />error C2275: 'FILE' : illegal use of this type as an expression <br />.c文件中将定义放在其他语句前边即可解决。<br />比如<br /> FILE* pFile = fopen("xxx.xml","rb");<br />拆成<br /> FILE* pFile;<br /> pFile = fopen("apabi.xml","rb");<br />然后<br /> FILE* pFile;//放文件前边集中声明各种变量转载 2011-03-22 17:33:00 · 4703 阅读 · 1 评论 -
GNU 长选项命令解析--getopt_long()
<br />Linux系统下,需要大量的命令行选项,如果自己手动解析他们的话实在是有违软件复用的思想,不过还好,GNU C library留给我们一个解析命令行的接口(X/Open规范),好好使用它可以使你的程序改观不少。 使用getopt_long()需要引入头文件 #include 现在我们使用一个例子来说明它的使用。 一个应用程序需要如下的短选项和长选项。 短选项 长选项 作用 -h --help 输出程序命令行参数说明然后退出 -c filename --cat filename 给定显示文件名 -转载 2011-05-06 11:05:00 · 977 阅读 · 0 评论 -
linux 中解析命令行参数 (getopt_long用法)
<br />getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下:<br /> #include <getopt.h><br /> int getopt_long(int argc, char * const argv[],<br /> const char *optstring,<br /> const struct option *longopts, int *longindex转载 2011-05-06 10:55:00 · 455 阅读 · 0 评论 -
如何解决"找不到MSVCR80.dll "的问题
分享一下 没有试过目前有三种解决方法。1, 在程序cpp文件里加上下面句子:#ifdef _DEBUG#define __LIBRARIES_SUB_VERSION Debug#else#define __LIBRARIES_SUB_VERSION #endif //转载 2011-07-19 18:15:48 · 2902 阅读 · 0 评论 -
error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup msvcrtd.li
错误 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup msvcrtd.lib 产生这个问题可能的原因1, 你用vc建了一转载 2011-03-03 11:23:00 · 691 阅读 · 0 评论 -
error C2143: syntax error : missing ')' before '*'
包API的时候出现了这么些错误: 1>decode_supplement.c1>d:\decode_standard\raw_theora_dec\src\decode_supplement.h(5) : error C2143: syntax error : missing '原创 2011-07-20 16:10:21 · 956 阅读 · 0 评论 -
MFC应用程序配置不正确解决方案
[现象] 对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把此exe文件拷贝到别人电脑上时,便不能运行了,大致的错误提示如下:应用程序配置不正确,请重新安装程序……或者是MSVCR80D.dll 没转载 2011-07-19 17:31:50 · 1156 阅读 · 0 评论 -
MSVCR80D.dll not found
能查到的解决方法都在里面有提及: 我是使用 stdafx.h加入这句code #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC80.CRT' version='8.0.50转载 2011-07-19 18:14:09 · 1084 阅读 · 0 评论 -
vld内存泄漏检测工具--Visual Leak Detector (VLD)
内存泄漏检测工具--Visual Leak Detector (VLD) 可以在http://www.codeproject.com/tools/visualleakdetector.asp 下载到。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:转载 2011-07-07 17:32:17 · 1289 阅读 · 0 评论 -
VC++ 错误:error LNK2005 解决方法
编译时链接错误如下:--------------------Configuration: testMain - Win32 Debug--------------------Linking...LinearList.obj : error LNK2005: "转载 2011-07-06 15:03:40 · 736 阅读 · 0 评论 -
error LNK2005:XXXX already defined in XXX.lib
分类: 编译器VC Compile Error Linking...base64.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specificatio转载 2011-07-06 14:58:48 · 1850 阅读 · 0 评论 -
fflush
<br />int fseek( FILE *stream, long offset, int origin ); <br />第一个参数stream为文件指针,offset为偏移,比如你要从文件的第10000个字节开始读取的话,offset就应该为10000,origin 为标志是从文件开始还是末尾。 <br />origin 的取值: <br />SEEK_CUR Current position of file pointer <br />SEEK_END End of file <br />SEEK转载 2011-05-09 20:45:00 · 850 阅读 · 0 评论 -
vc中error LNK2001:unresolved external symbol _WinMain@16的解决方法
<br />http://blog.csai.cn/user1/16781/archives/2006/6412.html一,问题描述<br />error LNK2001: unresolved external symbol _WinMain@16<br />debug/main.exe:fatal error LNK 1120:1 unresolved externals <br />error executing link.exe;二,产生这个问题可能的原因<br />1, 你用vc建了一个控制台程转载 2011-03-17 10:37:00 · 860 阅读 · 0 评论 -
关于获取yuv帧数问题
<br />读yuv文件的时候需要获取yuv文件的帧数,以便建立循环一帧一帧读取,这时候要获取yuv的帧数。<br />方法:首先用fopen函数打开一个yuv文件,接着用fseek( fYUV, 0L, SEEK_END ),再接着用ftell来获取文件的大小size,由于用的是yuv420,因此用size/(WIDTH*HEIGHT*1.5)即获得了yuv文件的总帧数。<br />需要注意的是:fseek函数已把指向yuv文件的开始的指针改变了位置,即此时的指针已指向文件的结尾处,由于接原创 2011-03-07 15:21:00 · 5559 阅读 · 0 评论 -
YUV调试总结
fopen里面只能打开英文路径,中文会出错。可以用其他函数(待查)打开。原创 2011-03-06 12:00:00 · 845 阅读 · 0 评论 -
Building MFC application with /MD[d] (CRT dll version)requires MFC sha...
<br />Building MFC application with /MD[d] (CRT dll version)requires MFC sha... 1>------ 已启动生成: 项目: OSGtest, 配置: Debug Win32 ------<br />1>正在编译...<br />1>AddScene.cpp<br />1>main.cpp<br />1>c:/program files/microsoft visual studio 8/vc/atlmfc/include/afx.h转载 2011-03-04 18:09:00 · 3103 阅读 · 1 评论 -
添加库文件lib 环境配置
vc6.0 添加库文件方法:工具->选项->项目和解决方案->右上角"显示以下内容目录"->1包含文件->下方加入DX9.0sdk Include包; 2 库文件同上,加入DX9.0sdk lib库; 然后视图->属性页->配置属性->链接器->输入->附加依赖项->加入静态库如"winmm.lib d3dx9.lib dxguic.lib"vs2005 添加库文件方法:打开一个实际的工程,打开了一个你自己创建的工程之后,(1)可以从项目->属性->配置属性->链接器->输入->附加依赖项->加入静态库如"原创 2011-03-03 11:43:00 · 1202 阅读 · 0 评论 -
获得窗口句柄
AfxGetMainWnd<br />AfxGetMainWnd获取自身窗口句柄<br />HWND hWnd = AfxGetMainWnd()->m_hWnd;<br /><br /><br />GetTopWindow<br />函数功能:该函数检查与特定父窗口相联的子窗口z序(Z序:垂直屏幕的方向,即叠放次序),并返回在z序顶部的子窗口的句柄。<br />函数原型:HWND GetTopWindow(HWND hWnd);<br />参数:<br /> hWnd:被查序的父窗口的句柄。如果该参数为转载 2011-03-04 17:44:00 · 853 阅读 · 0 评论 -
sizeof()和lstrlen()和strlen()区别
strlen()是返回字符串的字节长度, lstrlen()是返回字符串的字符长度。 也就是说第二个函数可能和第一个函数结果一样,如果字符串中字符单位都是单字节的话。 一般来说主要区别在于ascii的字符,还是unicode或者是utf的区别。 ASCII编码是一个字符占一个字节,Unicode是一个字符占两个字节.求这两种字符串的长度,要用两个函数分别来. lstrlen(),strlen()用来操作字符串或字符数组,lstrlen(),strlen()是在程序运行后得到字符串长度 sizeof()可以操转载 2011-03-03 11:35:00 · 434 阅读 · 0 评论 -
VS2005 菜单项添加事件 VC2005消息映射
1 VS2005的MFC Class Wizard哪去了在VS2005中拆分成两个功能: (1)、对控件和菜单建立事件映射的功能;可以通过在资源视图(通过双击资源文件*.rc可进入该视图),右键某一个菜单或者控件,在弹出的菜单中选择“添加事件处理程序;(2)、添加窗体的消息映射;在类视图(通过菜单“视图->类视图 Ctrl+W,C”可以进入)上双击类,然后在类上右键,选择“属性”菜单,进入属性界面,在属性界面上边有几个事件、消息的按钮,点击消息后选择具体创建的消息即可。2 vs2005中如何添加消息映射啊?转载 2011-02-28 15:26:00 · 4908 阅读 · 0 评论 -
MSVCR80D.dll not found
问题描述:大部分的vs.net 2005的用户在新建“win32项目-windows应用程序”的时候,新建的工程都通不过去,出现如下提示:Solution to “MSVCR80D.dll not found” by hua.“没有找到MSVCR80D.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”的完美解决方案^_^感觉偶做的还不错问题所在:由于vs.net 2005 采用了一种新的DLL方案,搞成一个exe还要配有一个manifest文件(一般在嵌入文件里了,所以看不到,不过也可转载 2011-02-25 11:01:00 · 645 阅读 · 0 评论 -
mfc添加消息响应
<br /> 当你在给一个MFC类添加消息响应的时候,遇到过这样的问题吗?<br /> Visual Studio弹出一个消息框提示:<br />MESSAGE: Resource Editor: Add/Remove operation is impossible, because the code element ''(null)'' is read only<br /> 解决方案是:<br /> 如果在这个出问题的类的头文件里定义了任何函数,把函数代码从头文件剪切到cpp文件里。关转载 2011-03-07 18:07:00 · 602 阅读 · 0 评论 -
GetWindowTextW(LPTSTR,int) const' :cannot convert parameter 1 from 'char[10]
GetWindowTextW(LPTSTR,int) const' :cannot convert parameter 1 from 'char[10]<br /> <br />宽字符和窄字符的错误:<br />int num1,num2,num3; <br />char ch1[10],ch2[10],ch3[10]; <br />GetDlgItem(IDC_EDIT1)->GetWindowTextW(ch1,10); <br />GetDlgItem(IDC_EDIT2)->GetWindowTex转载 2011-03-09 16:22:00 · 1885 阅读 · 0 评论 -
枚举类型
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。转载 2011-02-23 16:41:00 · 842 阅读 · 0 评论 -
网络字节序
2009-09-24缩略显示网络字节书序关键字: 网络字节书序 网络编程,字节序肯定是需要牢记的一个知识点了。不同的 CPU 有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种 1 . Little endian :将低序字节存储在起始地址 2 . Big endian :将高序字节存储在起始地址 LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说 低位值小,转载 2011-02-23 10:54:00 · 608 阅读 · 0 评论 -
error C2448: '' : function-style initializer appears to be a function definition
error C2448: '' : function-style initializer appears to be a function definition解决方法:其实还是一个子函数定义和声明的问题,形参和实参的设置。例如在代码开始声明void play(int,int); 定义的时候应写成void play(int a,int b)a,b为形参,在调用的时候要用int a1,b1;play(a1,b1);简单的c语言小问题,很久没用c了,使用的时候猪在那儿了。原创 2011-03-10 16:25:00 · 12716 阅读 · 1 评论 -
CFile类的成员
<br />CFile <br />CFile类的成员<br />数据成员 m_hFile 常包含操作系统文件句柄<br />构造函数 CFile 从一个路径或文件句柄构造一个CFile对象<br /> Abort 不管任何警告和错误,关闭一个文件<br /> Duplicate 构造一个基于该文件的副本<br /> Open 带错误检验选项,安全打开一个文件<br /> Close 关闭文转载 2011-03-10 16:16:00 · 1656 阅读 · 0 评论 -
C、C++和MFC中文件的读写方法
<br /> <br />对文件读写的三种方法<br /> 1.C中<br /> FILE *pFile=fopen("1.txt","w");<br />fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile");<br />//fseek(pFile,0,SEEK_SET);<br />//fwrite("ftp:",1,strlen("ftp:"),pFile);<br />//fwrite("http://转载 2011-03-10 16:13:00 · 1108 阅读 · 0 评论 -
CreateFile函数详解
<br /> CreateFile The CreateFile function creates or opens the following objects and returns a handle that can be used to access the object: files pipes mailslots communications resources disk devices(Windows NT only) consoles directories(open only) Create转载 2011-03-10 16:09:00 · 528 阅读 · 0 评论 -
在Visual C++中使用fopen()函数来读写文件
在Visual C++中使用fopen()函数来读写文件 刘志荣 很多使用过Turbo C的朋友喜欢用fopen()函数来读写文件,在Visual C++环境中您也可以使用fopen()来读写文件。而且您还可以使用Visual C++中的标准的打开文件对话框,这样可以使选取读写文件的路径更方便。具体的做法是这样的。 首 先您需要使用到MFC基本类库,在您原有的Visual C++程序中加上一个由CFileDialog类派生的新类,例如是CMyFileDialog,然后用这个新类定义一个对象,例如是:myDl原创 2011-03-10 16:05:00 · 1608 阅读 · 0 评论 -
mfc向导生成的 默认窗口大小和位置是如何设置的
<br />mfc向导生成的 默认窗口大小和位置是如何设置的2010-11-25 18:06<br />窗口最终是由Windows API 函数::CreateWindowEx创建,::CreateWindowEx需要窗口的信息,其中就有位置和大小,这些信息从哪里来?下面就分析一下:<br /><br />下面是CFrameWnd中Create函数的声明<br />BOOL Create(LPCTSTR lpszClassName,<br /> LPCTSTR lpszWindowName,<br /转载 2011-03-06 19:59:00 · 10322 阅读 · 0 评论 -
jpeg 标志
C#代码 DialogUtil openFolder = new DialogUtil(); if (openFolder.ShowFolderDialog() == DialogResult.OK) { DirectoryInfo sourc转载 2011-07-30 16:27:46 · 1085 阅读 · 0 评论