के बीच अंतर मैंने सोचा कि cpp foo.c
और gcc -E foo.c
स्रोत फ़ाइल को पूर्वप्रदर्शन करते हैं, लेकिन मुझे उनके आउटपुट को एक ही फ़ाइल के लिए अलग करना पड़ा।सीपीपी और जीसीसी-ई
$ cat foo.c
#define VARIABLE 3
#define PASTER(x,y) x ## _ ## y
#define EVALUATOR(x,y) PASTER(x,y)
#define NAME(fun) EVALUATOR(fun, VARIABLE)
extern void NAME(mine);
cpp
के लिए परिणाम:
$ cpp foo.c
# 1 "foo.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 329 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "foo.c" 2
extern void mine ## _ ## 3;
$
gcc -E
के लिए परिणाम और clang -E
के लिए:
$ gcc -E foo.c
# 1 "foo.c"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 330 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "foo.c" 2
extern void mine_3;
$
क्यों उन outputs अलग है, और जो एक का उपयोग करना चाहिए जब मैं देखना चाहता हूँ preprocessed स्रोत?
मूल कोड here
मैंने अभी यह कोशिश की। 'Cpp' का मेरा संस्करण समान आउटपुट को 'gcc -E' के रूप में बनाता है। आपके 'gcc' आउटपुट के समान। – selbie
मुझे 'gcc-e foo.c' के साथ' cpp foo.c' के साथ एक ही परिणाम मिलते हैं। क्या आप प्रश्न में 'cpp -v foo.c' के आउटपुट पेस्ट कर सकते हैं? –
यदि मैं cpp को कमांड लाइन पैरामीटर के रूप में '--traditional-cpp' का उपयोग करता हूं, तो मुझे आपके जैसा ही आउटपुट मिलता है। ऐसा लगता है कि किसी ने पहले से ही पहचान की है कि एक संभावित उत्तर के रूप में। – selbie