一些编程基础的注意(持续更新)
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型数据的简单方法:
>>的时候如果超过最低位了,则超过的部分自动消失,无需先&再>>。
如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语言编程技巧札记
- 笔试总结——编程基础篇【持续更新】
- 收藏一些编程相关的网站(持续更新)
- SQL —— 一些需要注意的地方(持续更新)
- windows编程注意点(持续更新)
- 使用jQuery的一些注意事项总结(持续更新......)
- PBX的一些基础知识(持续更新中)
- [数据库基础]——编码标准之编码注意事项(持续更新)
- 一些VC编程中的技巧[持续更新]
- [那些年踩过的坑]Android5.0 新控件的一些注意点(持续更新
- 一些VC编程中的技巧[持续更新]
- 『ExtJS』使用中需要注意的一些事(持续更新)
- 平时编程过程中一些总结和难点(持续更新中)
- 关于安全编写代码的一些注意事项[参照msdn],这些在编程基础中都已经相当重要了!
- 编程基础知识(持续更新)
- 编程及应用中的一些快捷键(持续更新中)
- iOS学习之——学习中遇到的一些常用的方法及一些注意事项(持续更新)