您的位置:首页 > 编程语言

一些编程基础的注意(持续更新)

2016-12-05 19:05 316 查看
形参如果是字符或整型数组的数组名,用for循环赋值或strcpy赋值函数结束后可以保留这些值,而形参如果是指针的话,不能用strcpy赋值,而是直接等于,函数结束后不可以保留赋的值。
 
>>的时候如果超过最低位了,则超过的部分自动消失,无需先&再>>。
如11110101,如果需要取高四位放在低四位上,不需要(11110101 & 11110000)>>4,直接11110101>>4即可,如果11110101前面的位有值则不能这样,如110011110101,不能去掉&11110000。
 
如果一个变量abc不同位的值分布在不同的变量def中,可以不用从abc赋值,而是先解析d,再解析e和f,用a|=来给a赋值。
如果编译器没有设置__My_Debug__,则以下代码段的Test()函数不运行,以此来区分测试和主代码,测试代码和主代码不要写在一个类中。
#if __My_Debug__
Test();
#endif
__My_Debug__在property(Art + F7)中的C/C++的preprocessordefinitions中放入。
 
乘法(乘以2的倍数)可以用<<代替,除法(除以2的倍数)可以用>>代替,比如:
1*8 等价于 1<<3
6/8等价于 6>>3
fWidth %8等价于fWidth &0x07
 
按8的长度来算,如果最后有剩余,加一。
if(fWidth & 0x07){

     fBytesPerRow += 1;

}
 
按8来分段,求最后不够8长度的剩余的点数。
unsigned short blockoffset = x&0x07;
 
在类中初始化赋值或在函数中赋值的不变的成员变量,获取的时候在函数最后加const,防止变量被随意改动。
 
unsigned short fW;
unsigned short fV;
unsigned short fY;
 
unsigned short W() const {return fW;};
unsigned short V() const {return fV;};

unsigned short Y() const {return fY;};

unsigned short X() const {return W();};
 
unsigned short width() const {return fW;}
unsigned short height() const {return fV;}
unsigned short finderSize() const { returnfFinderSize;};
 
UINT GetSelectedCount( ) const;
该函数返回列表视图控件中被选择列表项的数量。
 
voidComl_BarGen_MaxiCode_Module::fillBlock(unsignedchar*block,unsignedintstride,unsignedshortoffset)

{

       unsignedchar* prow = (unsignedchar*)0;

       unsignedint rowid = 0;

 

       for(rowid=0; rowid <height(); ++rowid) {

              prow=
block + rowid * stride;

              EdgeList* rowtempl =getRowTemplate(rowid);

              fillRow(prow,offset, rowtempl);

       }

}
在一个函数中要保证某个参数或功能满足一定条件,可以用assert函数,assert(false)为报错,assert(true)为正确。
Ex.
assert(x<1)为x应小于1,不然即报错。
 
voidComl_BarGen_2DRenderMaxicode::drawCellAt(unsignedintx,unsignedinty)

{

       assert(x<fWidth
&& y<fHeight);

       assert(x+fModule->width()
<fWidth && y+fModule->height() <fHeight);

 

       unsignedchar* pblock = fImgbuff+ (y*fBytesPerRow+(x
>> 3 ));

       unsignedshort blockoffset =x&0x07;

 

       fModule->fillBlock(pblock,fBytesPerRow, blockoffset);

}
 
MFC中获取窗口句柄及相关函数 

首先,窗口句柄,在窗口类中直接使用成员变量m_hWnd,在窗口外最常见是用AfxGetMainWnd (获取主窗口指针,其成员变量m_hWnd为主窗口句柄):

HWND hWnd = AfxGetMainWnd()->m_hWnd;

 

HWND是Windows系统中对所有窗口的一种标识,即窗口句柄。这是一个SDK概念。   

CWnd是MFC类库中所有窗口类的基类。微软在MFC中将所有窗口的通用操作都封装到了这个类中,如:ShowWindow等等,同时它也封装了窗口句柄即m_hWnd成员。

 
char postalCode[12];

memset(postalCode, 'c', 12*sizeof(char));

result:

cccccccccccc

 

char* str ="B105";

strcpy_s(postalCode, 5, str);\\只更新了前5个地址的内容,后面没变。

result:

B105\0ccccccc

strcpy_s(postalCode, 12, str);\\更新了前5个地址内容后,虽然没有指定值,但也更新为其他内容。

result:

B105\0-2-2-2-2-2-2-2

strcpy_s(postalCode, str);\\同上

result:

B105\0-2-2-2-2-2-2-2

 

1. 理解解析器传给中间模块的数据结构。(数据结构文件:dgbtool.sdcc.h)

2. 写出以下命令对应的数据结构的值:(PLW语言规范:plw.xps)

     -  AA(整数型): 3-1)3-2-6-(1)円弧パスの追加(半径指定)      Page106

     - SA(整数型):3-1-1-(1)座標系の指定(整数型)           Page37

     - DM(整数型):3-3-12-(1)イメージマスクの描画(整数型)   Page157

 

近日,小弟在研究UCOSVC++版的时候,发现它的头文件并没有在当前目录下,却可以精确的找到。我估计一定是:VC++编辑器早设置好了,早已经告诉编译器位置了。再谷歌,百度一下的解。

第一种方法:工程(Project)-->设置(Setting)-->C/C++选项卡 -->分类   选择“预处理器(Preprocessor)”,在下面有一项“附加包含路径(AdditionalInclude Files)”,里面写上头文件所在的目录即可。

 

第二种方法:Tools->options->Directories,选择Include Files,在下面添加目录

安装gitg:

sudoapt-get install gitg

 

 
 
 
 
包含头文件用相对目录,因为绝对目录在别人的环境下可能找不到,相对目录在当前目录前一层用..\.
 
指针参数只能改变其值,无法改变指针的值,用双重指针可以。
把一个指针赋给另一个指针,然后对另一个指针进行free以及置空,原始指针内容清楚,但指针地址不变,无法置空。

把double型数据转换成int型数据的简单方法:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c语言 git mfc 函数