एलएलवीएम में stdin
, stout
, और stderr
(अधिमानतः सी संस्करण) कैसे घोषित करता है? मैं एक खिलौना भाषा में कुछ stdio कार्यों का उपयोग करने की कोशिश कर रहा हूँ मैं बना रहा हूँ।एलएलवीएम stdin/stdout/stderr
char * fgets (char * str, int num, FILE * stream);
आदेश उपयोग करने के लिए है कि मैं stdin
जरूरत में: ऐसा ही एक समारोह fgets
था। इसलिए मैंने पाया कि FILE की परिभाषा उत्पन्न करने के लिए कुछ एलएलवीएम एपीआई कोड लिखा है, और stdin
बाहरी वैश्विक घोषित किया है। कोड इस उत्पन्न:
%file = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %marker*, %file*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
%marker = type { %marker*, %file*, i32 }
@stdin = external global %file*
हालांकि, जब मैं जिसके परिणामस्वरूप मॉड्यूल भाग गया, यह मुझे इस त्रुटि दिया:
Undefined symbols for architecture x86_64:
"_stdin", referenced from:
_main in cc9A5m3z.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
जाहिर है, क्या मैंने लिखा काम नहीं किया। तो मेरा सवाल यह है कि मुझे stdin
, stout
, और stderr
घोषित करने के लिए एलएलवीएम एपीआई में fgets
जैसे खिलौने भाषा कंपाइलर की तरह कुछ करने के लिए मुझे क्या लिखना है?
आप सी में सहायक कार्यों को लिख सकते हैं जो stdin/stdout/stderr को वापस कर देंगे और उन्हें आपके प्रोग्राम से लिंक करेंगे। –
मैं इसे आज़माउंगा, हालांकि अगर मैं कर सकता हूं तो एलएलवीएम एपीआई हमें ऐसा करने की अनुमति देता है, अगर मैं कर सकता हूं। – tophat