關於C語言的前置處理是否一定要同一行寫完?

2016-08-27 3:21 pm
看以下程式碼:

#define ABC int abc() \
{ \
for(;;) \
printf("abc"); \
}

其中,\為跨行連接符號,表示連接的上下行視為同一行,但我只看到#define是這樣用,其餘的前置處理就不知道了,如果網友知道問題的答案,請將您的來源(哪一個出版社出版的哪本書,或是學校上課老師等,但不要是部落格或網路文章等不確定正誤的資料來源)告訴我,好讓我去查,謝謝!

回答 (2)

2016-08-27 5:00 pm
> C語言的前置處理是否一定要同一行寫完?

當然不是真的. C語言的前置處理有4種:

1) #include 這支是一定要一行
2) conditional 包含#if ... #else ... #elif... #endif 這支是一定要多行才行
3) #define 的macro 這支是一定要一行
4)#error 這支是一定要一行

來源: 我累積數個學期的城市經驗說的.
2016-08-27 6:06 pm
C語言本身沒有"行"的觀念,闢如這樣寫也行:

#include <stdio.h>
int main()\
{ printf("abc"); return 0;\
}

但是文字編輯器會分行。因此程式中每行最後必定是(除了最後一行)看不的CR或LF或CR-LF...換行字元

C的前置處理和字串常數..會分辨"換行"字元(或者行頭...)
\ 的作用就是在這種情況下消除CR/LF"換行"的意義(注意: \ 必需是"每行最後字元" 多個空白也不行)

如果你只想查來源的話---想不起(也懶的查)標準C那裏提到這問題...
------------
行尾的\可能是各編譯器實作間的默任約定(有的編譯器在\後可有空白字元)
以前的C不能有這種\, C99好像也沒提到


收錄日期: 2021-05-04 02:12:56
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20160827072104AAWqufB

檢視 Wayback Machine 備份