मैंने लंबे समय तक सी ++ कोड नहीं लिखा है; हालांकि अब मुझे टेक्सास उपकरणों F28335 डीएसपी पर काम करना है और मैं सी से सी ++ में माइग्रेट करने की कोशिश कर रहा हूं।सी ++ स्थिर विधि के लिए कास्ट सूचक
//type definition for the interrupt service routine
typedef interrupt void (*PINT)(void);
//EPWMManager.h
class EPWMManager
{
public:
EPWMManager();
static interrupt void Epwm1InterruptHandler(void);
};
//EPWMManager.cpp
interrupt void EPWMManager::Epwm1InterruptHandler(void)
{
//some code to be called on interruption
}
//main.cpp
int main(void)
{
PINT p;
p = &(EPWMManager::Epwm1InterruptHandler);
return 0;
}
जब संकलन मैं निम्नलिखित मिल:
error: a value of type "void (*)()" cannot be assigned to an entity of type "PINT"
मुझे लगता है मैं याद कर रहा हूँ मैं निम्नलिखित कोड है कि एक वर्ग का एक स्थिर विधि के साथ व्यवधान सेवा दिनचर्या प्रारंभ करने की कोशिश कर रहा है कुछ कास्ट
'इंटरप्ट' कीवर्ड सी ++ का हिस्सा नहीं है। यह आपके कार्यान्वयन के लिए विशिष्ट एक विस्तार होना चाहिए। क्या होता है यदि आप इसे 'पिनटी' और 'एपीडब्ल्यूएम 1 इंटरप्टहैंडलर' दोनों की परिभाषाओं से हटा देते हैं? क्या आपको अभी भी कोई त्रुटि मिलती है? –
डीएसपी प्रोसेसर के लिए टीआई कंपाइलर्स के अपने अनुभव की गुणवत्ता में सी के लिए भी प्रभावशाली नहीं है (उदाहरण के लिए हमने पेज हैंडलिंग के सीमा मामलों पर कोड जनरेटर की बग में एक से अधिक बार बाउंस किया)। क्या आप सुनिश्चित हैं कि सी ++ जैसी अधिक जटिल भाषा में माइग्रेट करना एक अच्छा विचार है? – 6502
अगर मैं त्रुटि को 'इंटरप्ट' लेता हूं तो बाहर निकलता है ... हालांकि मुझे इसके प्रभावों के बारे में निश्चित नहीं है। मैं सोच रहा था कि सी ++ में माइग्रेट करना सब कुछ अधिक संरचित (वर्ग, वस्तुओं, डिजाइन पैटर्न इत्यादि) रखने के लिए एक अच्छा विचार होगा क्योंकि हमारे सी कोड बहुत गन्दा दिखने लग रहे हैं। – TropE