
C/C++
文章平均质量分 58
JXES智能生态系统
淘宝店铺:https://shop203908944.taobao.com/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
openembedded-core编译注意事项
由于项目需要,选用了一款评估板,系统都是基于openembedded/yocto构建的,这个框架的确是很方便构建和维护嵌入式系统,但初次编译时,对开发环境的要求还是很高的,否则可能一天一夜都编译不完。编译系统镜像准备$ mkdir ~/bin$ export PATH=~/bin:$PATH$ curl https://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ chmod a+x ~原创 2022-05-08 08:10:20 · 339 阅读 · 0 评论 -
变量命名规则------匈牙利命名规则
给程序中的每一个变量起一个好听,好看得名字,那也是一种美,所以再次摘录下来,留着参考,同时,方便有需要的朋友。 几年以前,Charles Simonyi(他后来成为微软的著名程序员)设计了一种以前缀为基础的命名方法,这种方法后来称为"匈牙利表示法"以记念他.他的思想是根据每个标识符所代表的含义给它一个前缀.微软后来采用了这个思想,给每个标识符一个前缀以说明它的数据类型.因此,整型变量的前缀原创 2012-02-28 15:30:33 · 1470 阅读 · 0 评论 -
全局函数访问类成员方法
全局函数(或者回调函数)访问类成员函数全局或回调函数访问类成员,这个问题有些老生长弹,但有很多方法都可以用,这里进行小小的总结一下。第一种方法:使用API函数: SendMessage(AfxGetMainWnd()->m_hWnd,DRAWPIC_OWNER,NULL,NULL); SendMessage(AfxGetApp()->GetMainWnd()->m_hWnd,DRA原创 2011-12-27 14:57:39 · 3260 阅读 · 0 评论 -
线程Thread Sleep(0)的意义重大
我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(原创 2011-12-16 16:54:34 · 3688 阅读 · 1 评论 -
不足8位补齐8位 不足2的n次方补齐2的n次方
最近驱动里碰到一个小问题,就是位补齐的问题,例如补齐8的倍数问题假如byte data.((data+8)>>3) 一次类推,对于2的n次方,左移右移的位数就是n了原创 2011-12-20 17:16:34 · 1514 阅读 · 0 评论 -
ASCII string转Binary类型, Binary类型转ASCII string
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Converting ASCII characters to HEX///////////////////////////////////////原创 2011-12-09 14:49:18 · 2696 阅读 · 0 评论 -
C/C++文件输入输出操作——FILE*、fstream、windowsAPI
基于C的文件操作在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* Fi原创 2011-10-28 10:41:48 · 1089 阅读 · 0 评论 -
SDK中创建控件和控件消息
控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、也不需要写消息处理函数。在主窗口得到WM_CREATE消息时,建立子窗口即可。 二、实例//参数:窗口句柄,消息,消息参数,消息参数 LRESULT CALLBACK WndProc(HWND hwnd,原创 2011-10-09 15:37:02 · 1191 阅读 · 0 评论 -
串口通讯常用代码
在做通讯程序的设计开发时,常常需要通过串口(COM口)来读写数据,具体的代码实现大致如下:1. 打开串口HANDLE h = CreateFile(_T("COM1:"), // File name原创 2011-08-29 12:13:52 · 2370 阅读 · 0 评论 -
【C/C++语言入门篇】-- 位运算 .
回顾之前的篇幅,C语言的主体部分基本已经介绍完了。之所以没有介绍C++的相关特性是因为在之前的文章中C和C++在这些方面都有共性,所以在面向对象之前。我们先把这些共性给介绍完。也就是说在介绍面向对象之前,所有的文章都是CC++中都能使用的。从这点上来看,现在正极力奋斗于C++战线转载 2011-08-24 17:10:53 · 2452 阅读 · 0 评论 -
用rand()和srand()产生为随机数的方法
标准库(被包含于中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed原创 2011-08-22 09:41:21 · 1281 阅读 · 0 评论 -
C/C++处理错误
处理错误: 一些在使用C++编程时可能遇到的基本错误类型1、编译错误。这些发生错误发生在代码编译期间。其结果是无法生成目标文件。这些错误通常是语法错误,意味着编译器不能理解某些内容。他们经常是由键入错误这样简单问题引起。编译器发出警告。虽然通常不必在意警告,但是应该将其作原创 2011-09-16 10:43:00 · 2306 阅读 · 0 评论 -
Sizeof 计算指针的问题
关于这个运算符网上讲解很多,不过今天又遇到个问题,一直以为是我程序设计上有问题,看了半天,原来是这个在搞鬼。byte * pbuf = new byte[1024];sizeof(pbuf) = 4// not 1024........delete[] pbuf;原创 2011-09-16 13:51:35 · 2426 阅读 · 0 评论 -
指针与参数传递
C/C++中参数传递问题问题与解答:1,值传递时,为什么被调用的方法中的形参值的改变不会影响到相应的实参? 答:因为按值传递时,系统首先为被调用的方法的形参分配内存空间,然后把实参中的值按位置一一对应“复制”给形参。形参中存储的值只是一份实参的拷贝,因此被调用方法中形参值的任何改变都不会影响到相应的形参。2,值传递和引用传递有什么不同,什么是值参数,它以什么方式传递?原创 2012-03-09 15:21:39 · 1446 阅读 · 0 评论 -
UTF8, ASCII, UNICODE相互转换
主要用到两个Api:MultiByteToWideCharhttp://msdn.microsoft.com/en-us/library/ms776413.aspxWideCharToMultiBytehttp://msdn.microsoft.com/en-us/library/ms776420.aspxANSI Unicode UTF8/*代码如下*原创 2012-05-02 10:32:53 · 3339 阅读 · 0 评论 -
c++中冒号(:)和双冒号(::)的用法和c/c++ 位域结构体 .
1.冒号(:)用法 (1)表示结构体内 位域的定义(即该变量占几个bit空间)typedef struct _XXX{ unsigned char a:4; unsigned char c;}XXX;(2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。struct _XXX原创 2012-05-17 09:04:28 · 4444 阅读 · 0 评论 -
#include和直接写class加类名的区别
include和直接写class加类名的区别假设B的定义是在B.h中,而存在下面这个文件:// A.h--------------------------------------------class A{private: B * impl_;};--------------------------------------------// A.cpp-----...原创 2018-04-09 17:06:09 · 1054 阅读 · 0 评论 -
C++ STL库使用注意点
STL使用在linux环境下写了一个C++程序,里面用到了STL的库函数,编译时报了很多错误。/usr/include/c++/5/bits/stl_list.h:507:11: note: ‘std::__cxx11::list’main.cpp:35:10: error: ‘string’ was not declared in this scope list&...原创 2018-03-14 17:36:19 · 2629 阅读 · 0 评论 -
C语言下的setjmp longjmp(C 语言异常处理)
在C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处;但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转。后面我们会看到这两个函数在处理异常上面的非常有用。setjmp 和 longjmp 使用方法在一个函数内进行跳转,可以使用 goto 语句(几乎所有国内教材都一刀切地教大家尽量不要使用它,但在我看来,这根本不是语言的问题,而是使用该语言原创 2017-10-11 17:58:40 · 715 阅读 · 1 评论 -
段、栈与局部变量、全局变量、静态变量
段、栈与局部变量、全局变量、静态变量很多时候,我们会遇到自己写的程序代码在编译时报一些段地址等相关的错误,主要是对几个概念不清楚,下面通过栗子理解下。include原创 2017-06-13 17:14:53 · 834 阅读 · 0 评论 -
JSON数据格式交换 C语言cJSON开源
1.JSON官方http://www.json.org/里面有很多JSON解析工具,分别用不同编程语言实现,比如C语言下流行的cJSON,除此之外还有很多C版本的工具,其他语言也类似有多个版本,根据个人喜好选择使用。2.JSONJSON比较小巧灵活,解析容易,唯一不好的就是阅读没有XML那么直观,但XML解析复杂,体积庞大,所以现在web上大多选用JSON作为数据交互处理。XML注重条理...原创 2017-06-09 11:32:02 · 3725 阅读 · 0 评论 -
malloc,realloc,calloc
C语言中在堆上分配内存三函数: void* malloc(unsigned size); void* realloc(void* ptr, unsigned newsize); void* calloc(size_t numElements, size_t sizeOfElement); 都在stdlib.h函数库内,它们的返回值都是原创 2017-06-15 15:16:41 · 425 阅读 · 0 评论 -
宏__DATA__日期以YYYYMMDD格式显示
以下代码是从网络上看到,经修改后目前可以正常使用。#include <stdio.h> #define YEAR ((((__DATE__ [7] - '0') * 10 + (__DATE__ [8] - '0')) * 10 \+ (__DATE__ [9] - '0')) * 10 + (__DATE__ [10] - '0')) #define MON...原创 2017-06-08 22:04:05 · 4903 阅读 · 0 评论 -
ftruncate函数的使用
本能功能ftruncate( ) NAME ftruncate( ) - truncate a file (POSIX)SYNOPSISint ftruncate ( int fildes, /* fd of file to truncate */ off_t length /* length to trunca原创 2017-06-18 10:30:22 · 1699 阅读 · 0 评论 -
Linux下文件描述符的函数操作
标准文件函数文件类操作函数文件类型 表 文件操作类型━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 字符 含义──────────────────────────── "r" 打开文字文件只读 "w" 创建文字文件只写 "a"原创 2017-06-18 10:16:58 · 900 阅读 · 0 评论 -
C++中C/C++格式化输出
对于不同的机器,一此格式化输出的函数常常会得不到正确的输出,比如小端上的程序在大端上运行等,另外,在日常程序开发时,也会经常被这样的小问题而困扰很久,最终发现是她的问题,不免有点叹息,下面对printf/wprintf/CString.Format等相关函数所使用的格式化输出的语法作一总结,有些是从官方资料摘过来的,还是英文的。函数中格式化声明的一般格式为: %[flags]原创 2014-10-28 11:57:49 · 2574 阅读 · 0 评论 -
编程命名规则
一个好的项目,通过命名是否规范,第一眼就可以看出项目质量的30%,所以摘录了些如下:编程命名中的7+1个提示编程中的命名是基本功,但其中也有很多需要注意的地方。坏的命名经常容易令人一头雾水。本文提供了7条命名中的建议,以及一条黄金法则。总之,变量名是编程的第一步,第一步走好了,后面才走得好。AD:作者为编程命名提供了7+1原创 2012-11-08 14:17:13 · 2053 阅读 · 0 评论 -
C语言嵌入式系统编程修炼(经典中的经典)
C语言嵌入式系统编程修炼 http://blog.chinaunix.net/u/25764/showart_326589.html转载自这里,真是太经典了。C语言嵌入式系统编程修炼原创 2012-08-17 16:41:15 · 6604 阅读 · 0 评论 -
printf的格式输出
具体请参考MSDN。下面只举几个经常会碰到的例子:char szTemp[] = "abcdefg";wchar_t szWchar[] = L"hijklmn";1,printf("%s", szTemp);输出:abcdefg;"printf"与"%s原创 2011-09-16 11:59:03 · 1638 阅读 · 0 评论 -
MFC窗口各控件的颜色和字体的设置
转自:http://hi.baidu.com/lc2000/blog/item/d89ce708bd1dbad663d986be.html很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面转载 2011-09-09 12:49:15 · 2266 阅读 · 2 评论 -
怎样在EVC4.0下编程实现音频和视频文件的的播放
<br />// TODO: Add your control notification handler code here<br /> IGraphBuilder *pGraph; <br /> // 指向Filter Graph的指针<br /> IMediaControl *pMediaControl; <br /> // 指向MediaControl对象的指针<br /> IMediaEvent *pMediaEvent;<br /> CString filePath="//Program F原创 2010-10-13 15:33:00 · 1011 阅读 · 0 评论 -
DLL与类
<br />这几天需要用到DLL,以前都是用别人的,现在要自己设计自己的DLL给别人用,遇到了不少问题,记录如下,如有不对的地方,请告人给与指点,谢过。<br />注:所有DLL都是在嵌入式系统上使用<br />环境:VS2005,EVC<br />1. 用VS构建了DLL,规则DLL,扩展MFC的DLL;VS的APP调用没有问题,但EVC的调用就有问题。为了通用,所有接口都申明为extern "C"<br />2. 在VS的DLL中用到了类<br />dll.h<br />#ifdef DLL_EXPOR原创 2010-10-12 16:53:00 · 918 阅读 · 0 评论 -
_declspec(dllexport)与_declspec(dllimport)
__declspec(dllexport)<br />我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:<br />不使用 __declspec(原创 2010-10-08 11:30:00 · 731 阅读 · 0 评论 -
typedef的四个用途和两个陷阱
<br />用途一: <br />定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: <br />char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, <br />// 和一个字符变量; <br />以下则可行: <br />typedef char* PCHAR; // 一般用大写 <br />PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 <br />虽然: <br />char *pa原创 2010-08-31 17:15:00 · 640 阅读 · 0 评论 -
EVC创建DLL及调用的基本方法
<br />记录下在EVC4中如何创建DLL的方法,供以后参考.<br />WINCE下的DLL有4种:1.WINCE DLL 2.MFC Regular DLL 3.MFC Extension DLL 4. Resource DLL<br />WINCE DLL:导出函数使用标准C接口,可被MFC或非MFC程序调用<br />MFC Regular DLL:是使用MFC创建,导出函数也使用标准C接口,可以被MFC或非MFC程序调用<br />MFC Extension DLL:可以创建MFC派生类,只能被原创 2010-08-31 14:37:00 · 1127 阅读 · 1 评论 -
利用vs2005.net编写基于WinCE的DLL
<br />1 动态链接库简介<br />1.1、DLL概述<br /> 动态链接库(Dynamic Link Library,简称DLL)是一些编译过的可执行的程序模块,可以在应用程序中或其他DLL中被调用。DLL的应用非常广泛,可以实现多个应用程序的代码和资源共享,是WinCE程序设计中的一个非常重要的组成部分。<br /> DLL设计程序的优点:<br />· 共享代码、资源和数据。DLL作为一种基于Windows的程序模块,不仅可以包含可执行的代码,还可以原创 2010-08-31 14:17:00 · 1078 阅读 · 0 评论 -
uafxcw.lib(dllmodul.obj) : error LNK2005: DllMain already defined in
<br />VS2005:<br />uafxcw.lib(dllmodul.obj) : error LNK2005: DllMain already defined in XXXX.obj<br /> <br />写一个DLL小程序,用到一个 afx.h的headfile,就出现上述问题,后来把processor里修改了下,去掉_USRDLL,后来就OK了.<br />这个问题应该是重复定义的问题,可能在其他地方也会遇到这样的error,故贴出来给遇到的朋友参考下。原创 2010-08-30 15:27:00 · 2822 阅读 · 1 评论 -
ZeroMemory、memset 和“={0}” 用于清零操作的区别
ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别:首先是ZeroMemory和memset的区别:1、ZeroMemory是微软的SDK提供的,memset属于C Run-time Library提供的。因此ZeroMemory只能用于Windows系统,而memset还可用于其他系统。 2、ZeroMemory是一个宏,只是用于把一段内存的内容置零,内部其原创 2009-10-29 11:03:00 · 3155 阅读 · 0 评论 -
VC 滑动动条控件Slider的用法
在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下:主要要方法有:1、设置、取得滑动范围: void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE ); void GetRange( int& nMin, int& nMax ) const; 2、设置、取得按下左右箭头滑动间隔: int SetLineSi原创 2009-11-05 10:24:00 · 1734 阅读 · 0 评论 -
C/C++技巧收集
1. 判定字符串中是否有中文字符,从中文处输出。char str[] = "abc de[]长三的ad"; int i;for (i=0; i {if ( str[i] & 0x80){MessageBox("Have")break;} char * pc = "abc de[]长三的ad";char * p = pc; while (*原创 2009-10-28 15:00:00 · 690 阅读 · 0 评论