2011-08-11 5 views
11

मैं Compile Time Hashing technique I found here का उपयोग कर एक सी ++ परियोजना के साथ प्रयोग कर रहा था। मैक्रोज़ अपेक्षित काम करते हैं, और संकलन समय उचित है, लेकिन 64 रिकर्सिव मैक्रोज़ विजुअल स्टूडियो के इंटेलिजेंस के साथ नरक खेल रहे हैं। प्रत्येक छोटे संपादन के बाद, आईडीई ~ 30 सेकंड के लिए लटकता है। मुझे संदेह है कि यह घोंसला वाले मैक्रोज़ को पार्स करने की कोशिश कर घायल हो रहा है। जैसे ही मैं #include "consthashmacro.h लाइन को हटा देता हूं, प्रतिक्रिया सामान्य हो जाती है।इस हेडर फ़ाइल को VS2005 को क्रॉल में धीमा कर देता है? (IntelliSense exonerated?)

क्या कोई विशिष्ट शीर्षलेख फ़ाइल के लिए Intellisense को अक्षम करने का कोई तरीका है?

मुझे यह आलेख "Controlling IntelliSense Through Macros" शीर्षक मिला है, लेकिन समाधान मेरे लिए सही तरीके से काम नहीं कर रहा है।

शायद यह intelliSense नहीं है? यह निश्चित रूप से उस हेडर से संबंधित है। कोई विचार?

संपादित करें:
मैं Intellisense अक्षम करने renaming the feacp.dll as recommended द्वारा पूरी तरह से कोशिश की। मुझे वही व्यवहार मिलता है - संपादन आईडीई को लंबी अवधि के लिए लटका देता है। हेडर को हटाने से प्रदर्शन बहाल हो जाता है। इस अविश्वसनीय अंतराल के कारण वीएस 2055 की अन्य विशेषता क्या हो सकती है?

पुन: पेश करने:
विजुअल स्टूडियो 2005 का उपयोग करना, डिफ़ॉल्ट सेटिंग्स के साथ एक नया "Win32 कंसोल अनुप्रयोग" बनाएँ (अर्थात: precompiled हेडर का उपयोग करके)। निम्नलिखित कोड को सीपीपी फ़ाइल में जोड़ें। स्रोत निर्देशिका (क्रिस सावोई की साइट पर zip file से उपलब्ध में (निकालें 'consthashmacro.h')

#include "stdafx.h" 

#define CONSTHASH(s) ((s)[0]) 
//#include "consthashmacro.h" 

void Send(long hash, long value) 
{ 
    printf("Sending %x %x\n", hash, value); 
} 

#define QQuot_(x) #x 
#define QQuote(x) QQuot_(x) 
#define Debug_Print(s, v) (Send(CONSTHASH(QQuote(__LINE__)##s), *((long*)&(v)))) 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
     int i = __LINE__; 
     float f= 3.14f; 
     Debug_Print("This is a test %d", i); 

     i++; 
     Debug_Print("This is a test %d", i); 
     Debug_Print("This was test %f", f); 

    return 0; 
} 

जब मैं इसे नीचे में शामिल हैं लाइन के साथ #define CONSTHASH की जगह, प्रदर्शन धीमा हो जाता है।

+0

क्या प्रोजेक्ट प्रीकंपिल्ड हेडर का उपयोग कर रहा है? शायद आप इस हेडर को इसमें रखने का प्रयास कर सकते हैं। – Praetorian

+0

अच्छा विचार है, लेकिन (बाद में प्रतीक्षा करने के 5 मिनट ...) यह काम नहीं किया। – AShelly

+1

वीएस -2010 'टूल्स> विकल्प> टेक्स्ट एडिटर> सी/सी ++> उन्नत' में मैं IntelliSense को अक्षम करने के विकल्प देखता हूं और ऐसे में वीएस2005 में उपलब्ध नहीं हैं? – nobody

उत्तर

4

मैं सही था कि रिकर्सिव मैक्रोज़ पर कुछ लटका हुआ था, लेकिन यह इंटेलिसेन्स नहीं था। अपराधी Refactor! for C++ from DevExpress का मुफ्त संस्करण साबित हुआ जिसे मैंने बहुत समय पहले स्थापित किया था (और शायद ही कभी इस्तेमाल किया गया था)।

जब मैंने इसे अनइंस्टॉल किया, तो आईडीई प्रदर्शन सामान्य हो गया। मैंने IntelliSense को फिर से सक्षम किया है, और यह कोई समस्या नहीं है।

मैं इंटेलिसेन्स को औपचारिक माफी मांगना चाहता हूं: मुझे खेद है कि मैंने आप पर अनुचित असर डाला है।

0

एक जवाब वास्तव में की तुलना में एक समस्या निवारण सुझाव का अधिक है, लेकिन:

ले लो प्रोसेस एक्सप्लोरर की एक प्रति:। http://technet.microsoft.com/en-us/sysinternals/bb896653

प्रक्रिया dll का, धागे, सॉकेट चेक बाहर, खुले फाई ले वर्णक, आदि लाइन पर डबल क्लिक करके जहां प्रक्रिया एक्सप्लोरर में प्रक्रिया सूचीबद्ध है।

इसके अलावा, क्या आप कॉन्स्टाश को फिर से परिभाषित कर रहे हैं? आज़माएं:

#ifndef CONSTHASH 
    #define CONSTHASH(s) ((s)[0]) 
#endif 

और यह देखने के लिए तोड़ें कि निष्पादन की रेखा आपकी परिभाषा को छोड़ देती है या नहीं। हो सकता है कि आप कुछ ऐसा परिभाषित करें जिसे फिर से परिभाषित नहीं किया जाना चाहिए?

+0

सुझावों के लिए धन्यवाद। मुझे यह जांचकर अपराधी मिला कि मेरे सिस्टम के बीच क्या अलग था और एक डिफ़ॉल्ट स्थापना। – AShelly

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