預處理的幾個問題

2022-06-17 19:36:12 字數 740 閱讀 2720

一:解決塊注釋/**/不能巢狀的問題:

我們知道行注釋//可以多層巢狀和逐層取消,而塊注釋/**/不能巢狀或不能與//混用,否則有可能出現編譯錯誤。通常我們在程式除錯時如果要取消一大段**,可以用條件編譯#if 0  #endif實現

二:避免標頭檔案的重複包含:

假如a.h中自定義了乙個結構體,在b.h和c.h中都又自定義了乙個結構體(其成員有a.h的結構體內容,所以b.h和c.h都包含了a.h),而在.c中又用到了b.h和c.h的結構體(所以包含了b.h和c.h),此時因為多次包含了a.h所以編譯器會報錯,此時只要在a.h中使用#ifndef _debug__  #define _debug__ ....#endif.

三 巨集的巢狀包含:

#define aa 1

#define bb 1

void main(void)

#ifdef aa

…… #if bb   //巢狀的巨集,這裡不能再用#ifdef,

……   //否則bb是0也會執行這些**,

#else   //而這#else不會被執行

……#endif

#else

……#endif

或者這樣也行

#define aa   //使用巨集定義做控制開關,此時#ifdef可巢狀

#define bb   //使用巨集定義做控制開關,要關閉時,直接注釋掉

int main()

Redis 快取處理的幾個問題

目錄 問題一 快取穿透 問題二 快取擊穿 問題三 快取雪崩 測試 說明 利用redis與mysql資料庫的機制 redis中一旦不存在查詢的ksy,就訪問mysql 直接繞過快取,訪問myslq,而製造db的請求壓力 解決 將從mysql請求出的空存入redis一定時間 說明 某一熱點key在高併發...

幾個問題的

1.寫乙個函式返回引數二進位制中 1 的個數 比如 15 0000 1111 4 個 1 程式原型 int count one bits unsigned int value 解 無符號整型為32位,所以利用迴圈32次,逐個判斷二進位制每一位是不是1 int count one bits unsig...

TCP連線的幾個問題的處理

問題一 accept4 too many open files retrying in 640ms或者 dial tcp 127.0.0.1 8080 socket too many open files都是socket的數量,即檔案描述符的數量不夠用了,解決方法,增加檔案描述符的數量 ulimit...