[問題] maco替換字符
Hi 我想請問一下
(1)
#define B(z) #z
char *string=B(HELLO);
void main()
{
printf("%s\n",string);
}
因為根據
C primer plus的說法,會形成有雙引號的HELLO,展開如下:
char *string="HELLO"。
螢幕顯示結果:HELLO
可是C primer plus有一個範例如下:
(2)
#define PSQR(x) printf("The square of " #x " ")
void main()
{
PSQRY(y);
}
螢幕顯示結果:The square of y
問題:
#x 旁為啥會多一組雙引號,形成" #x "。
如果不加雙引號,結果就會是:
The square of #x
為什麼呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.94.202 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1627158951.A.B10.html
※ 編輯: ManOfSteel (101.10.94.202 臺灣), 07/25/2021 04:37:40
※ 編輯: ManOfSteel (101.10.94.202 臺灣), 07/25/2021 04:51:18
推
07/25 06:44,
4年前
, 1F
07/25 06:44, 1F
→
07/25 06:44,
4年前
, 2F
07/25 06:44, 2F
→
07/25 06:44,
4年前
, 3F
07/25 06:44, 3F
→
07/25 06:45,
4年前
, 4F
07/25 06:45, 4F
→
07/25 06:45,
4年前
, 5F
07/25 06:45, 5F
→
07/25 06:45,
4年前
, 6F
07/25 06:45, 6F
→
07/25 06:46,
4年前
, 7F
07/25 06:46, 7F
嗯,感謝回答。
可是我還是無法明白下面這樣
#define PSQR(x) printf("The square of #x ")
為什麼#x不會替換成y,反而是輸出下面結果
The square of #x
※ 編輯: ManOfSteel (101.10.94.202 臺灣), 07/25/2021 13:46:39
推
07/25 14:03,
4年前
, 8F
07/25 14:03, 8F
推
07/25 14:51,
4年前
, 9F
07/25 14:51, 9F
→
07/25 14:52,
4年前
, 10F
07/25 14:52, 10F
→
07/25 14:52,
4年前
, 11F
07/25 14:52, 11F
→
07/25 14:54,
4年前
, 12F
07/25 14:54, 12F
→
07/25 14:55,
4年前
, 13F
07/25 14:55, 13F
→
07/25 14:55,
4年前
, 14F
07/25 14:55, 14F
→
07/25 14:56,
4年前
, 15F
07/25 14:56, 15F
嗯嗯,謝謝LP大大和其它人的熱心教導,我懂惹QQ
※ 編輯: ManOfSteel (101.10.94.202 臺灣), 07/26/2021 00:57:55
→
07/26 01:11,
4年前
, 16F
07/26 01:11, 16F
※ 編輯: ManOfSteel (101.10.94.202 臺灣), 07/26/2021 01:52:16
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章