2013-02-21 10 views
8

सारांश: सी ++ प्रीप्रोसेसर आउटपुट में कुछ पंक्तियां शामिल हैं जो <built-in> कहती हैं। मुझे यह जानकर उत्सुकता है कि ये क्या हैं।सी ++ प्रीप्रोसेसर आउटपुट में <built-in> क्या है?

विवरण:

जब मैं clang++ -E साथ test.cpp नामक एक फ़ाइल में निम्न कोड संकलन (g++ से उत्पादन समान है):

#include <iostream> 

int main() 
{ 
    std::cout << "Hello World!" << std::endl; 
    return 0; 
} 

उत्पादन की पहली कुछ पंक्तियों इस प्रकार हैं:

# 1 "test.cpp"
# 1 "test.cpp" 1
# 1 "< में निर्मित>" 1
# 1 "< में निर्मित>" 3
# 156 "< में निर्मित>" 3
# 1 "< कमांड लाइन> "1
# 1" < में निर्मित> "2
# 1" test.cpp "2

मेरा प्रश्न क्या <built-in> बयान मतलब है है।

उत्तर

2

मैक्रो को "1", और बिल्ट-इन के मामले में, मैक्रो डिफ़ॉल्ट रूप से, यानी, -DMACRO=1 परिभाषित किया गया है जैसे, __cplusplus, कमांड लाइन के मामले में, मैक्रो कमांड लाइन पर परिभाषित किया गया है का विस्तार ।

cpp -dM foo.h 
+2

यह है कि मैं भी कम से कम एक '.cpp' फ़ाइल के लिए, एक मानव पठनीय उत्पादन प्राप्त करने के लिए ई स्विच की जरूरत है दिखता है:

आप पूर्व-निर्धारित मैक्रो की एक सूची देख सकते हैं। यह भी आदेश देता है कि आउटपुट प्रकट होता है कि कौन सा मैक्रो लागू होता है? परीक्षण मामले में मैंने शामिल किया है कि मैं यह पता लगाने की कोशिश कर रहा हूं कि '# 156" "3' क्या कर रहा है। –

+0

ऑर्डर मैक्रोज़ लागू होने के क्रम के अनुरूप है। '-dN' ध्वज आज़माएं, इसे आपको उस 156 को ट्रैक करने में मदद करनी चाहिए। – perreal

संबंधित मुद्दे