C/C++
文章平均质量分 58
JXES智能生态系统
And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.
还有最重要的是, 你要有勇气去听从你直觉和心灵的指示——它们在某种程度上知道你想要成为什么样子,所有其他的事情都是次要的。
Stay Hungry. Stay Foolish.
求知若饥,虚心若愚。
展开
-
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 · 268 阅读 · 0 评论 -
变量命名规则------匈牙利命名规则
给程序中的每一个变量起一个好听,好看得名字,那也是一种美,所以再次摘录下来,留着参考,同时,方便有需要的朋友。 几年以前,Charles Simonyi(他后来成为微软的著名程序员)设计了一种以前缀为基础的命名方法,这种方法后来称为"匈牙利表示法"以记念他.他的思想是根据每个标识符所代表的含义给它一个前缀.微软后来采用了这个思想,给每个标识符一个前缀以说明它的数据类型.因此,整型变量的前缀原创 2012-02-28 15:30:33 · 1412 阅读 · 0 评论 -
全局函数访问类成员方法
全局函数(或者回调函数)访问类成员函数全局或回调函数访问类成员,这个问题有些老生长弹,但有很多方法都可以用,这里进行小小的总结一下。第一种方法:使用API函数: SendMessage(AfxGetMainWnd()->m_hWnd,DRAWPIC_OWNER,NULL,NULL); SendMessage(AfxGetApp()->GetMainWnd()->m_hWnd,DRA原创 2011-12-27 14:57:39 · 3186 阅读 · 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 · 3591 阅读 · 1 评论 -
不足8位补齐8位 不足2的n次方补齐2的n次方
最近驱动里碰到一个小问题,就是位补齐的问题,例如补齐8的倍数问题假如byte data.((data+8)>>3) 一次类推,对于2的n次方,左移右移的位数就是n了原创 2011-12-20 17:16:34 · 1459 阅读 · 0 评论 -
ASCII string转Binary类型, Binary类型转ASCII string
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Converting ASCII characters to HEX///////////////////////////////////////原创 2011-12-09 14:49:18 · 2641 阅读 · 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 · 1019 阅读 · 0 评论 -
SDK中创建控件和控件消息
控件是子窗口,它们是系统已经定义好的窗口类,因此不需要注册、也不需要写消息处理函数。在主窗口得到WM_CREATE消息时,建立子窗口即可。 二、实例//参数:窗口句柄,消息,消息参数,消息参数 LRESULT CALLBACK WndProc(HWND hwnd,原创 2011-10-09 15:37:02 · 1155 阅读 · 0 评论 -
串口通讯常用代码
在做通讯程序的设计开发时,常常需要通过串口(COM口)来读写数据,具体的代码实现大致如下:1. 打开串口HANDLE h = CreateFile(_T("COM1:"), // File name原创 2011-08-29 12:13:52 · 2216 阅读 · 0 评论 -
【C/C++语言入门篇】-- 位运算 .
回顾之前的篇幅,C语言的主体部分基本已经介绍完了。之所以没有介绍C++的相关特性是因为在之前的文章中C和C++在这些方面都有共性,所以在面向对象之前。我们先把这些共性给介绍完。也就是说在介绍面向对象之前,所有的文章都是CC++中都能使用的。从这点上来看,现在正极力奋斗于C++战线转载 2011-08-24 17:10:53 · 2395 阅读 · 0 评论 -
用rand()和srand()产生为随机数的方法
标准库(被包含于中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void);从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed原创 2011-08-22 09:41:21 · 1232 阅读 · 0 评论 -
C/C++处理错误
处理错误: 一些在使用C++编程时可能遇到的基本错误类型1、编译错误。这些发生错误发生在代码编译期间。其结果是无法生成目标文件。这些错误通常是语法错误,意味着编译器不能理解某些内容。他们经常是由键入错误这样简单问题引起。编译器发出警告。虽然通常不必在意警告,但是应该将其作原创 2011-09-16 10:43:00 · 2117 阅读 · 0 评论 -
Sizeof 计算指针的问题
关于这个运算符网上讲解很多,不过今天又遇到个问题,一直以为是我程序设计上有问题,看了半天,原来是这个在搞鬼。byte * pbuf = new byte[1024];sizeof(pbuf) = 4// not 1024........delete[] pbuf;原创 2011-09-16 13:51:35 · 2254 阅读 · 0 评论 -
指针与参数传递
C/C++中参数传递问题问题与解答:1,值传递时,为什么被调用的方法中的形参值的改变不会影响到相应的实参? 答:因为按值传递时,系统首先为被调用的方法的形参分配内存空间,然后把实参中的值按位置一一对应“复制”给形参。形参中存储的值只是一份实参的拷贝,因此被调用方法中形参值的任何改变都不会影响到相应的形参。2,值传递和引用传递有什么不同,什么是值参数,它以什么方式传递?原创 2012-03-09 15:21:39 · 1387 阅读 · 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 · 3272 阅读 · 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 · 4376 阅读 · 0 评论 -
#include和直接写class加类名的区别
include和直接写class加类名的区别假设B的定义是在B.h中,而存在下面这个文件:// A.h--------------------------------------------class A{private: B * impl_;};--------------------------------------------// A.cpp-----...原创 2018-04-09 17:06:09 · 988 阅读 · 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 · 2456 阅读 · 0 评论 -
C语言下的setjmp longjmp(C 语言异常处理)
在C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处;但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转。后面我们会看到这两个函数在处理异常上面的非常有用。setjmp 和 longjmp 使用方法在一个函数内进行跳转,可以使用 goto 语句(几乎所有国内教材都一刀切地教大家尽量不要使用它,但在我看来,这根本不是语言的问题,而是使用该语言原创 2017-10-11 17:58:40 · 670 阅读 · 1 评论 -
段、栈与局部变量、全局变量、静态变量
段、栈与局部变量、全局变量、静态变量很多时候,我们会遇到自己写的程序代码在编译时报一些段地址等相关的错误,主要是对几个概念不清楚,下面通过栗子理解下。include原创 2017-06-13 17:14:53 · 785 阅读 · 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 · 3614 阅读 · 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 · 389 阅读 · 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 · 4642 阅读 · 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 · 1526 阅读 · 0 评论 -
Linux下文件描述符的函数操作
标准文件函数文件类操作函数文件类型 表 文件操作类型━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 字符 含义──────────────────────────── "r" 打开文字文件只读 "w" 创建文字文件只写 "a"原创 2017-06-18 10:16:58 · 804 阅读 · 0 评论 -
C++中C/C++格式化输出
对于不同的机器,一此格式化输出的函数常常会得不到正确的输出,比如小端上的程序在大端上运行等,另外,在日常程序开发时,也会经常被这样的小问题而困扰很久,最终发现是她的问题,不免有点叹息,下面对printf/wprintf/CString.Format等相关函数所使用的格式化输出的语法作一总结,有些是从官方资料摘过来的,还是英文的。函数中格式化声明的一般格式为: %[flags]原创 2014-10-28 11:57:49 · 2471 阅读 · 0 评论 -
编程命名规则
一个好的项目,通过命名是否规范,第一眼就可以看出项目质量的30%,所以摘录了些如下:编程命名中的7+1个提示编程中的命名是基本功,但其中也有很多需要注意的地方。坏的命名经常容易令人一头雾水。本文提供了7条命名中的建议,以及一条黄金法则。总之,变量名是编程的第一步,第一步走好了,后面才走得好。AD:作者为编程命名提供了7+1原创 2012-11-08 14:17:13 · 2001 阅读 · 0 评论 -
C语言嵌入式系统编程修炼(经典中的经典)
C语言嵌入式系统编程修炼 http://blog.chinaunix.net/u/25764/showart_326589.html转载自这里,真是太经典了。C语言嵌入式系统编程修炼原创 2012-08-17 16:41:15 · 6572 阅读 · 0 评论 -
printf的格式输出
具体请参考MSDN。下面只举几个经常会碰到的例子:char szTemp[] = "abcdefg";wchar_t szWchar[] = L"hijklmn";1,printf("%s", szTemp);输出:abcdefg;"printf"与"%s原创 2011-09-16 11:59:03 · 1575 阅读 · 0 评论 -
MFC窗口各控件的颜色和字体的设置
转自:http://hi.baidu.com/lc2000/blog/item/d89ce708bd1dbad663d986be.html很多人定义了基于MFC的程序项目,当设计界面使用控件时,却不知道如何对各控件进行字体与颜色的设计;其实这些修改是需要动手添加代码的,这方面转载 2011-09-09 12:49:15 · 2207 阅读 · 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 · 966 阅读 · 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 · 871 阅读 · 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 · 685 阅读 · 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 · 598 阅读 · 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 · 1083 阅读 · 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 · 1040 阅读 · 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 · 2753 阅读 · 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 · 2409 阅读 · 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 · 1662 阅读 · 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 · 659 阅读 · 0 评论