C語言一些少見但很有用的語法

2021-07-09 16:54:34 字數 1081 閱讀 5564

我們平時用的都是#define,突然遇到了這個。。。其實,#undef 與 #define 相對應。#undef 的作用是取消已經有的巨集定義。

#include

#define max 5

int main()

當取消第6行printf的注釋,將會報錯,『max』 undeclared , 因為max巨集被undef 取消了。

常見如下形式的定義:

struct buf

;

這其實是實現了乙個變長陣列data,data只是乙個陣列名,初始data沒有元素,而且該陣列的真實位址緊隨結構體struct buf之後。所以,結構體的大小並不包含陣列占用的大小(即使陣列以後有了元素),但是卻仍然可以像使用結構體成員一樣操作data。

//將「hello」存入data陣列

#pragma message("訊息文字")
當編譯器遇到這條指令時就在編譯輸出視窗中將訊息文字列印出來。

#pragma once
(比較常用)

只要在標頭檔案的最開始加入這條指令就能夠保證標頭檔案被編譯一次,這條指令實際上在vc6中就已經有了,但是考慮到相容性並沒有太多的使用它。

#pragma once是編譯相關,就是說這個編譯系統上能用,但在其他編譯系統不一定可以,也就是說移植性差,不過現在基本上已經是每個編譯器都有這個定義了。

#ifndef,#define,#endif這個是c++語言相關,這是c++語言中的巨集定義,通過巨集定義避免檔案多次編譯。所以在所有支援c++語言的編譯器上都是有效的,如果寫的程式要跨平台,最好使用這種方式

說說一些少見的IP和掩碼

今天遇到一件窩火的事情,被0.0.0.0的掩碼玩得很狼狽。以前的需求要求掩碼至少有1個1,就是說是不支援0.0.0.0的。但是對於三層路由來說,又要求0.0.0.0。對路由有些許了解就清楚,對於預設路由,一般為下面形式 檢視了tcp ip網際互聯中對掩碼的說明,掩碼為0.0.0.0一般與ip位址為0...

git 總結一些不常用 但很有用的操作

顯示當前head對應的commitid git rev parse head顯示遠端dev最新的commitid git rev parse origin dev顯示本地倉庫dev最新的commitid git rev parse dev強制切換到某個commitid 分離頭 當暫存區有變化時,也會...

Android 開發中一些很有用但你不知道的方法

english version public static void printmap map mp public static int randint int min,int max 備註 大家注意看到有一些no上新增了一些數字,其實這些從能力上來說是yes,但是為什麼說是no呢?下面乙個乙個解釋...