c語言 和 的用法

2021-08-14 09:47:47 字數 942 閱讀 5304

在c語言的巨集中,#的功能是將其後面的巨集引數進行字串化操作(stringfication),簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個雙引號。比如下面**中的巨集:

#define warn_if(exp)    do   while(0)
那麼實際使用中會出現下面所示的替換過程:

warn_if (divider == 0);被替換為do  while(0);
這樣每次divider(除數)為0的時候便會在標準錯誤流上輸出乙個提示資訊。

而##被稱為連線符(concatenator),用來將兩個token連線為乙個token。注意這裡連線的物件是token就行,而不一定 是巨集的變數。比如你要做乙個選單項命令名和函式指標組成的結構體的陣列,並且希望在函式名和選單項命令名之間有直觀的、名字上的關係。那麼下面的**就非常實用:

struct command

;#define command(name)

// 然後你就用一些預先定義好的命令來方便的初始化乙個command結構的陣列了:

struct command commands =

command巨集在這裡充當乙個**生成器的作用,這樣可以在一定程度上減少**密度,間接地也可以減少不留心所造成的錯誤。我們還可以n個##符號連線 n+1個token,這個特性也是#符號所不具備的。比如:

#define link_multiple(a,b,c,d) a##_##b##_##c##_##d

typedef struct _record_type link_multiple(name,company,position,salary);

// 這裡這個語句將展開為:

// typedef struct _record_type name_company_position_salary;

c語言和c 的「 」的語言

在c語言中,有三種作用,分別如下 1.取位址。單目運算子。用來取乙個變數的位址。比如int i,p p i 這裡的 作用是取變數i的位址。int a 1 int p a 取位址給位址變數,所以這個是取位址 引用 int a 1 int p a 取乙個變數的別名,我們可以通過這個變數賦值給標有 符號的...

C語言 和 的使用

前言 在開發偏大型的專案中,基本上都要使用到 和 一,含義 a,將巨集定義的變數轉化為字串 b,將其前後的兩個巨集定義中的兩個變數無縫拼接在一起 二,使用例項 1 include2 3 define aaa aaa 4 define bbb bbb 5 define aaabbb 123123 6 ...

C語言和 C 語言關係

沒有深思熟慮的設計過程 使用時存在很多 灰色地帶 殘留量過多低階語言的特徵 直接利用指標進行記憶體操作 最終程式執行效率的高效 當面向過程方 暴露越來越多的缺陷的時候,業界開始考慮在工程專案中引入物件導向的設計方法,而第乙個需要解決的問題就是 高效的物件導向語言,並且能夠相容已經存在的 c語言 物件...