अंदर मैं सी भाषा का प्रयोग कर एक माइक्रो नियंत्रक में काम कर रहा हूँ। इस विशिष्ट सूक्ष्म में, बीच में आता है निम्नलिखित तरीके से #pragma
का उपयोग कर परिभाषित किया जा करने के लिए है:#pragma #define
static void func();
#pragma INTERRUPT func <interrupt_address> <interrupt_category>
static void func() { /* function body */ }
<interrupt_address>
सदिश तालिका में बाधा का पता है।
static void _int_p00();
#pragma INTERRUPT _int_p00 0x10 1
static void _int_p00() { (*isr_p00)(); }
हम (उदाहरण की तरह isr_p00
) कहीं और वास्तविक बाधा सेवा दिनचर्या और उपयोग समारोह सूचक को परिभाषित उन्हें निष्पादित करने के लिए: <interrupt_category>
में पोर्ट 0 पिन 0 व्यवधान परिभाषित करने के लिए 1 या 2 उदाहरण के लिए, है।
यह सुविधाजनक हो सकता है अगर बीच में आता है मैक्रो का उपयोग में परिभाषित किया जा सकता है। मैं निम्नलिखित तरीके से मैक्रो निर्धारित करना चाहती:
#define DECLARE_INTERRUPT(INT_NAME, INT_CAT) \
static void _int_##INT_NAME(); \
#pragma INTERRUPT _int_##INT_NAME INT_NAME##_ADDR INT_CAT \
static void _int_##INT_NAME() { (*isr_##INT_NAME)(); }
संकलक निम्न त्रुटि फेंक: निम्न पंक्ति का संकेत
Formal parameter missing after '#'
:
static void _int_##INT_NAME() { (*isr_##INT_NAME)(); }
मुझे लगता है कि पूर्वप्रक्रमक निर्देशों में नहीं किया जा सकता #define
एस? क्या कोई काम आसपास है?
क्या माइक्रोकंट्रोलर और संकलक? यदि यह जीसीसी आधारित है, तो माइक्रोचिप के सी 32 में एक विशेष विशेषता मैक्रो यो का उपयोग किया जा सकता है: 'शून्य __ISR (_TIMER_5_VECTOR) SomeISR (शून्य)' – detly
माइक्रो ओकेआई 431 है और कंपाइलर OKI से है: IDEU8। – Donotalo