??xml version="1.0" encoding="utf-8" standalone="yes"?>
技术面试来了两个hQ一个体型壮就叫壮哥吧Q一个尖头奸脑戴个眼镜就U其为尖弟吧Q 壮哥上来问了些基和知识面上的东西Q我是有一说一Q实事求是.
弟沉静了会开始ؕ叫了Q东一点西一点,奇淫技巧,自以为是Q一些问题都不知他在问啥Q老子听着q大,最看不惯半瓉的贱ZQ
随后来了ZQ这女的更恶心,嘴上长了个黑点,好像怹上说q种女的怎么怎着来着Q反正对q种价不太好Q果Ӟ从她问的问题看好像是在忽悠,时不时还扮嫩淫笑一下,闷骚十Q?br />看这样子Q这U公司这Uh不去也ŞQ?
]]>
我看了感觉有点奇妙了Q?/p>
]]>
再帖转蝲来的6条理论:
sizeof操作W的l果cd是size_tQ它在头文g中typedef为unsigned intcd。该cd保证能容U_现所建立的最大对象的字节大小?br>
1、若操作数具有类型char、unsigned char或signed charQ其l果{于1?br>
ANSI C正式规定字符cd?字节?br>
2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long doublecd的sizeof 在ANSI C中没有具体规定,大小依赖于实玎ͼ一般可能分别ؓ4????????0?br>
sizeof(c) = 1;
3、当操作数是指针Ӟsizeof依赖于编译器。例如Microsoft C/C++7.0中,nearcL针字节数?Qfar、hugecL针字节数?。一般Unix的指针字节数??br>
对于CZE序中的sizeof sQ根据第3条,s是个字符串的指针Q输Zؓ sizeof s :4
4、当操作数具有数l类型时Q其l果是数l的d节数?br>
对于sizeof d[] Q根据第4条,d是数l类型,q回的是数组的字节数再加上末null一字节Qsizeof d[] = hello : 6
5、联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这U类型对象的d节数Q包括Q何垫补在内?br>
让我们看如下l构Q?br>
struct {char b; double x;} a;
在某些机器上sizeofQaQ?12Q而一般sizeofQcharQ? sizeofQdoubleQ?9?br>
q是因ؓ~译器在考虑寚w问题Ӟ在结构中插入IZ以控制各成员对象的地址寚w。如doublecd的结构成员x要放在被4整除的地址?br> 对于sizeof t Q对齐后t的大ؓ20故输出结果ؓsizeof t :20
6、如果操作数是函C的数lŞ参或函数cd的Ş参,sizeofl出其指针的大小?br> sizeof ch :4
在Jeffrey的Error ShowE序作者自定义了一D宏
#define chHANDLE_DLGMSG(hWnd, message, fn) \
case (message): return (SetDlgMsgResult(hWnd, uMsg, \
HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
HANDLE_##message((hWnd), (wParam), (lParam), (fn))是借用了windows.h里面?/p>
#define HANDLE_MSG(hwnd, message, fn)
case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
如果message是DQ_QRQAQ的话,q个应该?/p>
HANDLE_WM_CREATE((hwnd), (wParam), (lParam), (Cls_OnCreate))
Qdefine HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \
((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L)
那么宏展开为:return Cls_OnCreate(hwnd, (LPCREATESTRUCT)(lParam) )? 0L : (LRESULT)-1L;
但是在对话框消息处理?对话框过E函数应该在处理了消息的情况下返回TRUEQ如果没有处理,则返回FALSE。如果对话框q程q回了FALSEQ那么对话框理器ؓq条消息准备默认的对话操作。如果对话框处理了一个需要特定返回值的消息Q则对话框的q回值应该被讄用SetWindowLong后的q回?q些Ҏ消息?
? WM_CHARTOITEM
? WM_COMPAREITEM
? WM_CTLCOLORBTN
? WM_CTLCOLORDLG
? WM_CTLCOLOREDIT
? WM_CTLCOLORLISTBOX
? WM_CTLCOLORSCROLLBAR
? WM_CTLCOLORSTATIC
? WM_INITDIALOG
? WM_QUERYDRAGICON
? WM_VKEYTOITEM
所以在处理WM_INITDIALOG ?我们不能单纯的调用消息分器.
而在处理QPQEQQAQD中,从windowsx.h可以看到:
/* void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) */
#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
((fn)((hwnd), (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
Cls_OnCommand׃是个void型的函数Q是没有q回值的Q因此windows默认q种消息处理q程必须q回一?|而返?gpC我们的消息q程不处理这个消?q是矛盾?如果直接使用HANDLE_WM_COMMAND(hwnd, wParam, lParam, Dlg_OnCommand) ;按钮会没有反?关闭也不?所以可以用用下面的宏解?/p>
#define SetDlgMsgResult(hwnd, msg, result) (( \
(msg) == WM_CTLCOLORMSGBOX || \
(msg) == WM_CTLCOLOREDIT || \
(msg) == WM_CTLCOLORLISTBOX || \
(msg) == WM_CTLCOLORBTN || \
(msg) == WM_CTLCOLORDLG || \
(msg) == WM_CTLCOLORSCROLLBAR || \
(msg) == WM_CTLCOLORSTATIC || \
(msg) == WM_COMPAREITEM || \
(msg) == WM_VKEYTOITEM || \
(msg) == WM_CHARTOITEM || \
(msg) == WM_QUERYDRAGICON || \
(msg) == WM_INITDIALOG \
) ? (BOOL)(result) : (SetWindowLong((hwnd), DWL_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE))
#define chHANDLE_DLGMSG(hWnd, message, fn) \
case (message): return (SetDlgMsgResult(hWnd, uMsg, \
HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
从这两个宏可以得?如果是特D消息的话那么返回默?,q设|说明消息处?如果WM_COMMAND的话,那么q回SetWindowLong((hwnd), DWL_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE),一般ؓTRUE表明已经处理
2、从讉K权限的角度来看,嵌套cd与它的外围类的对象成员名h相同的访问权限规则。不能访问嵌套类的对象中的私有成员函敎ͼ也不能对外围cȝU有部分中的嵌套cd立对象?
3、嵌套类中的成员函数可以在它的类体外定义?
4、嵌套类中说明的成员不是外围cM对象的成员,反之亦然。嵌套类的成员函数对外围cȝ成员没有讉K权,反之亦然。因此,在分析嵌套类 ?nbsp; 外围cȝ成员讉K关系Ӟ往往把嵌套类看作非嵌套类来处理?由引可见Q嵌套类仅仅是语法上的嵌入?br>
5、在嵌套cM说明的友元对外围cȝ成员没有讉K权?
6、如果嵌套类比较复杂Q可以只在外围类中对嵌套c进行说明,关于嵌套的详l的内容可在外围cM外的文g域中q行定义?