2011-12-13 5 views
7

मुझे लगता है कि कष्टप्रद संदेश के साथ की तरह peppered है एक हेडर फाइल लेने वाली हूँ। संदेश को मुद्रित होने से रोकने के लिए मैं इस फ़ाइल को शामिल करने से पहले कुछ भी कर सकता हूं?दृश्य सी ++ में #pragma संदेश ("...") अक्षम करें?</p> <pre><code>// annoying.h: #pragma message("Compiling " __FILE__) </code></pre> <p>जब वहाँ कोई वास्तविक समस्याएं हैं मैं एक साफ निर्माण उत्पादन पसंद करेंगे:

// not_annoying.cpp: 

// PUT MAGIC HERE 
#include "annoying.h" 
+0

हैडर एक और समूह से वितरित किया जाता है; यह हर बार मैन्युअल रूप से इसे बदलने के लिए अयोग्य लगता है। हालांकि मैंने एक प्री-बिल्ड चरण पर विचार किया जो इसे 'sed' के माध्यम से चलाता है। – Eric

उत्तर

8

बस एक मैक्रो message pragma गायब बनाता है परिभाषित करते हैं।

#define message(ignore) 
+0

तो क्या यह एक ऐसी रेखा है जो उस पर "#pragma" कहती है? दुर्भाग्यवश मैं इसका उपयोग नहीं कर सकता क्योंकि टोकन 'संदेश' का प्रयोग अन्य चीजों के लिए भी किया जाता है - जाहिर है कि मेरे पास वास्तव में तकनीकी की बजाय संगठनात्मक समस्या है। लेकिन यह दयालु है कि किसी तरह का मेटा-प्रगामा नहीं है! – Eric

+3

प्रागों का व्यवहार पहले ही कार्यान्वयन-परिभाषित है, इसलिए खाली प्रगति का प्रभाव भी कार्यान्वयन-परिभाषित है। यह तकनीकी रूप से कानूनी है (6.10.6.1), लेकिन कौन जानता है कि यह क्या करता है! –

+2

@Eric: ध्यान दें कि '# डिफाईन संदेश (अनदेखा करें)' एक * मैक * नामित एक * फ़ंक्शन मैक्रो * को परिभाषित करेगा, सामान्य मैक्रो नहीं। यही है, यह एक 'संदेश()' साइट के खिलाफ प्रतिस्थापित होगा लेकिन एक सादा 'संदेश' के खिलाफ नहीं होगा। साथ ही, यदि आप मैक्रो के दायरे को सीमित करना चाहते हैं, तो आप समस्याग्रस्त शीर्षलेख सहित इसे # undef' कर सकते हैं। – jamesdlin