從缺陷中學習C 02

2021-10-07 11:51:53 字數 924 閱讀 5038

2.巨集定義問題

利用巨集定義計算(2*x + 2*y)*z

//錯誤**

#define perimeter(x,y)   2*x + 2*y

void main()

由於巨集替換本身只是文字替換,上述**變成result = 2*x +2*y*z;

//正確**

#define perimeter(x,y)   (2*(x) + 2*(y))

void main()

巨集定義命名與系統庫同名問題

//檔案a.cpp中

#define map  _cxx::hash_map

mapmyhashmap

//檔案b.cpp中

#include #include "a.cpp"

mapmymap;

巨集編譯在預編譯階段執行,所以在b.cpp中,**行mapmymap在預編譯時被替換成_cxx::hash_mapmymap,不會使用b.cpp中包含的#include,只需修改a.cpp為smap即可。

//正確**,修改a.cpp中的巨集名字smap

#define smap  _cxx::hash_map

mapmyhashmap

多語句巨集定義使用錯誤

//錯誤**

#define exit(info) std::cerr《當data為負數時,列印"data is a negative number!",然後程式退出;當data大於等於0時,程式不會列印。只需用大括號將巨集定義括起來。

#define exit(info) (std::cerr

《從缺陷中學習c c 》摘要 劉浙新登著

while char c getchar eof rpath 使用編譯選項 r指定 ld library path etc ld.so.cache lib和 usr lib 注 so前使用export ld library path char buf 10 char src 10 hello s s...

C 02 訪問許可權

include stdafx.h include iostream.h class test void seti int ai 思考1.function member什麼時候會寫成private?思考2.考慮繼承關係,子類可以訪問父類的private成員嗎?如果不行,應該用哪個訪問控制形式?思考3....

標準C 02標準函式

標準c課程 二 c語言中的標準函式 c語言中提供一組工具,他們叫做標準函式 每個標準函式用來解決乙個常見的問題 不同標準函式名稱不同 可以在程式中編寫函式呼叫語句使用標準函式。例如 printf標準函式可以把程式中的數字列印在終端視窗裡 為了使用這個標準函式需要包含stdio.h的標頭檔案,可以在雙...