考慮這個#define
:這個#define是否等價於C中的這個變量定義?
#define msd_buffer ((volatile char *) MSD_BUFFER_ADDRESS)
這個變量定義:
volatile char *msd_buffer = MSD_BUFFER_ADDRESS;
是msd_buffer
—爲變量的兩個定義和宏—等同?
考慮這個#define
:這個#define是否等價於C中的這個變量定義?
#define msd_buffer ((volatile char *) MSD_BUFFER_ADDRESS)
這個變量定義:
volatile char *msd_buffer = MSD_BUFFER_ADDRESS;
是msd_buffer
—爲變量的兩個定義和宏—等同?
A #define
是一個宏。它充當你傳入它的直接複製麪食。所以,msd_buffer
不是一個變量,它是一個強制轉換爲volatile數組。
假設例如使用這樣的:
msd_buffer[160] = 0xFF;
這將是一樣使用它作爲一個變量。但是,它不具有可變的所有特性,如賦值:
msd_buffer = NEW_BUFFER_ADDRESS; // invalid!
或地址了結:
my_func(&msd_buffer); // invalid!
如果你瞭解了這些缺點(也許還有更多),然後,你正在使用像這樣的宏。
定義語句只是一個文本替換。而已。所以在你的情況下,不是真的。