C语言中include后用引号与尖括号的区别:
对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h
对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h
即,如果在使用时没有指定动态链接库的路径,则Windows系统按如下顺序搜索该动态链接库:
使用该动态链接库的.exe文件所在目录、当前目录、Windows系统目录、Windows目录、环境变量%PATH%中的路径下的目录。
*************************************************************************
Const在C++和C#中的用法:
C++:
作为限定符---声明变量只能被读
1. 修饰变量, 如const int i=5; (声明的同时必须初始化,另外在另一个文件中采用extern引用时, 不能再次进行初始化)
2. 修饰类数据成员, 不能初始化(如果需要整个类中都恒定的常量,应该用枚举来实现)
3. 修饰指针时: 如果const位于星号的左侧,则const就是用来修饰指针所指向的变量, 即指针指向为常量; 如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。
4. 修饰函数参数和返回值都是起到保护作用
5. 修饰类函数成员时,一般const放在函数之后,如:”…A(void) const”,这样是表明该函数不应该修改类的数据成员,起到一个防错的作用
6. 不要将一个const对象指针赋值给一个非const对象指针,因为这样有可能会引起值得修改,从而引发错误
C#:
与在C++中作用基本相同
1. Const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值); readonly则是运行期动态解析的常量;
2. Const隐含static, 而readonly则没有
*************************************************************************
关于_T, TEXT, _TEXT, L在C++中的运用
_T=TEXT->_TEXT->L
*************************************************************************
关于函数调用约定
函数调用约定包括:stdcall, cdecl, fastcall, thiscall, nakecall
不同的调用约定的主要区别在一下几方面:
函数参数压栈顺序,函数结束后谁来清栈,函数的修饰符
stdcall: 从右至左 被调用函数 前加'_'后加'@'和参数长度
cdecl: 从右至左 调用函数 前加'_'