2013-10-28 12 views
12

तो मैं कोड के इस टुकड़े भर में आया था:यह ब्रैकेटलेस/ब्रेसेलिस कोड मान्य कैसे है?

%:include <stdio.h> 

int main(int argc, char *argv<::>) <% 
    printf("C program succesfully running..."); 
    getchar(); 

    return 0; 
%> 

यह कुछ संकलक बग है या यह कुछ नया मैं अभी तक पता नहीं लगाया है क्योंकि यह बिना किसी समस्या के चल रहा है है।

+0

ब्रैकेटलेस कोड क्यों समस्या है? दबाने वाली चीज ब्रेसेलिस कोड – Cruncher

उत्तर

14

इस कोड सी द्वि आलेख का उपयोग करता है, जैसा कि यहां बताया: http://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C

सी मानक (आईएसओ/आईईसी 9899: 201x, Punctuators §6.4.6: 3):

इस मामले पर कहना चाहता है

भाषा के सभी पहलुओं में, छह टोकन

<: :> <% %> %: %:%: 

व्यवहार में क्रमश: छह टोकन के रूप में ही

[ ] { } # ## 

उनकी वर्तनी को छोड़कर।

+0

दिलचस्प है, लिंक के लिए धन्यवाद, अब यह सब समझ में आता है! – Houssni

+0

ऐसा क्यों करना चाहिए ?! –

+1

@ पीटर मिहले इस उत्तर के लिंक से: 'कीबोर्ड में भाषा के पूरे चरित्र सेट को कवर करने के लिए कुंजी नहीं हो सकती है' – Houssni

2

ये punctuators कर रहे हैं और %:# रूप में ही है और %>} आदि के रूप में ही है ... C99 draft standard अनुभाग 6.4.6Punctuators का कहना है:

भाषा के सभी पहलुओं में, छह tokens67)

<: :> <% %> %: %:%: 

व्यवहार में क्रमश: एक ही रूप में छह टोकन

[ ] { } # ## 

उन्होंने यह भी कभी कभी के रूप द्वि आलेख को संदर्भित कर रहे हैं के रूप में हम टिप्पणी 67 में देखें:

ये टोकन कभी-कभी '' digraphs 'कहा जाता है।

2

यह सी भाषा का एक बहुत ज़ेन छोटा कोने है।

पुराने दिनों में, टर्मिनलों और कीबोर्ड अक्सर प्रोग्रामिंग के लिए इच्छित सभी पात्रों का समर्थन नहीं करते थे; इसलिए digraphs और ट्रिग्राफ पेश किए गए थे।

मुझे आश्चर्य है कि कोई आधुनिक कंपाइलर अभी भी उनका समर्थन करता है, लेकिन वहां है।

2

Digraph, सी 99 में पेश किया गया।

सी 99 6.4।6 Punctuators

भाषा के सभी पहलुओं में, छह टोकन

<: :> <% %> %: %:%: 

व्यवहार में क्रमश: छह टोकन

[ ] {} # ## 
उनकी वर्तनी के अलावा

के रूप में ही।

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