當前位置:才華齋>計算機>C語言>

C語言中用巨集怎麼構造識別符號

C語言 閱讀(1.08W)

導語;標示符(IDentifier)是指用來標識某個實體的一個符號。在不同的應用環境下有不同的含義。那麼用巨集怎麼構造識別符號呢?一起來學習下吧:

C語言中用巨集怎麼構造識別符號

怎麼用巨集來構造識別符號,需要引用符號貼上操作符——##,“##”的作用是將右邊“運算元”追加到左邊“運算元”,將最後的符號標識作為變數的.識別符號,不過最後的識別符號要符合識別符號的規定。

例如:

#define PASTE(a, b) a##b

應用:

char *PASTE(te, st) = “Hello, world!”;

printf(“%s”, test);

又如:

#define PASTE(a, b) char *a##b

應用:

PASTE(te, st) = “Hello, world!”;//te、逗號、空格、st,逗號是用來隔開識別符號的,空格會被自動忽略掉

printf(“%s”, test);

上面兩個例子最終都會構造出test識別符號。

又Linux kernel的sysfs中,DEVICE_ATTR、DRIVER_ATTR、CLASS_ATTR、BUS_ATTR的識別符號定義也用了“##”貼上操作符,如下:

#define BUS_ATTR(_name, _mode, _show,_store)

struct bus_attribute bus_attr_##_name =__ATTR(_name, _mode, _show, _store)

#define CLASS_ATTR(_name, _mode, _show,_store)

struct class_attributeclass_attr_##_name = __ATTR(_name, _mode, _show, _store)

#define DRIVER_ATTR(_name, _mode, _show,_store)

struct driver_attributedriver_attr_##_name =

__ATTR(_name, _mode, _show, _store)

#define DEVICE_ATTR(_name, _mode, _show,_store)

struct device_attribute dev_attr_##_name= __ATTR(_name, _mode, _show, _store)