What is the differences about struct in C99 to ANSI-C? -


यह कोड ANSI-C में सही नहीं दिखता है, लेकिन ठीक है C99:

  स्ट्रेट एक {int x; Int y; } Z;  

C99 और एएनएसआई-सी में संरचना के बारे में क्या अंतर हैं?

संपादित करें: मैं "a" भूल गया, मेरे बुरे। सीएएमटी मोड में जीसीसी के साथ यह कोड ठीक है, लेकिन स्पंट पर एक पार्स त्रुटि है, जो सभी सी 99 एक्सटेंशन का समर्थन नहीं करता है।

Edit2: यहां स्प्लिट का आउटपुट है:

< प्री> स्प्लिट 3.1.2 --- 1 9 डिसें 2007 बिल्ड / ईकोस_इप्लीकेशन / शामिल / cyg / fileio / fileio.h: 151: 5: पार्स त्रुटि। जारी रखने का प्रयास करना निर्माण / ecos_install / include / cyg / fileio / fileio.h: 151: 25: पार्स त्रुटि से पुनर्प्राप्त नहीं किया जा सकता। *** जारी नहीं कर सकते

संपादन 3: यह फ़ाइल eCos fileio.h है (इस खंड की अंतिम पंक्ति पंक्ति 152 है):

  typedef CYG_ADDRWORD cyg_dir; // ================================================ ===================================== फाइल सिस्टम तालिका एंट्री टाइपिंगफ इंट्र cyg_fsop_mount (cyg_fstab_entry * fste, cyg_mtab_entry * mte); टाइपिंगफ इंट्र cyg_fsop_umount (cyg_mtab_entry * mte); Typedef int cyg_fsop_open (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम, int मोड, cyg_file * fte); Typedef int cyg_fsop_unlink (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम); Typedef int cyg_fsop_mkdir (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम); Typedef int cyg_fsop_rmdir (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम); Typedef int cyg_fsop_rename (cyg_mtab_entry * mte, cyg_dir dir1, const char * name1, cyg_dir dir2, const char * name2); Typedef int cyg_fsop_link (cyg_mtab_entry * mte, cyg_dir dir1, const char * name1, cyg_dir dir2, const char * name2, int प्रकार); टाइपिंगफ इंट्र cyg_fsop_opendir (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम, cyg_file * fte); Typedef int cyg_fsop_chdir (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम, cyg_dir * dir_out); Typedef int cyg_fsop_stat (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम, स्ट्रैट स्टेट * buf); Typedef int cyg_fsop_getinfo (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम, int कुंजी, शून्य * buf, int len); Typedef int cyg_fsop_setinfo (cyg_mtab_entry * mte, cyg_dir dir, const char * नाम, int कुंजी, शून्य * buf, int len); Struct cyg_fstab_entry {const char * नाम; // फाइलसिस्टम नाम CYG_ADDRWORD डेटा; // निजी डेटा मूल्य cyg_uint32 सिंकमोड; // सिंक्रनाइज़ेशन मोड cyg_fsop_mount * माउंट; Cyg_fsop_umount * umount; Cyg_fsop_open * खुले; Cyg_fsop_unlink * अनलिंक; Cyg_fsop_mkdir * mkdir; Cyg_fsop_rmdir * rmdir; Cyg_fsop_rename * नाम बदलें; Cyg_fsop_link * link; Cyg_fsop_opendir * opendir; Cyg_fsop_chdir * chdir; Cyg_fsop_stat * stat; Cyg_fsop_getinfo * getinfo; Cyg_fsop_setinfo * setinfo; } CYG_HAL_TABLE_TYPE;  

<पूर्व> struct {int x; Int y; } Z;

यह कोड 1 9 78 से सी के प्रत्येक संस्करण से वही सीमेंटिक्स के साथ वैध सी है, और शायद बहुत पहले। यह एक चर को परिभाषित करता है, जिसे z कहा जाता है, जिसके प्रकार के रूप में एक नाम-कम स्ट्रक्चर प्रकार है, जिसमें दो ints शामिल हैं।

ofaurax, आपको यह निष्कर्ष निकालने के लिए क्या त्रुटि संदेश मिलता है कि यह काम नहीं करता है? / P>

(पेडेंटिक नाइट: "एएनएसआई सी" एएनएसआई, एआईएनएसआई द्वारा मानक के संस्करण का मतलब है, अमेरिकी राष्ट्रीय मानक संस्थान। एएनएसआई सी मानक के 1989 के संस्करण को आईएसओ, अंतरराष्ट्रीय मानक संगठन द्वारा अपनाया गया था। सी मानक का एक नया संस्करण बनाया, जिसे एएनएसआई ने फिर अपनाया।)

संपादित करें:

  struct a {int x; Int y; } Z;  

यह एक स्ट्रिप प्रकार को परिभाषित करता है, जिसे "स्ट्रक्चर ए" कहा जाता है, जिसमें दो ints, और उस प्रकार के एक चर, जेड शामिल हैं। यह अभी भी सी ("के एंड आर") के 1 9 78 संस्करण में भी अच्छी तरह से बनाई गई है। मैं नहीं जानता कि विभाजन क्या है, लेकिन सटीक त्रुटि संदेश अभी भी हमारी समस्या का पता लगाने में मदद करेंगे।


Comments