मैं समझता हूं कि C ++ कंपाइलर एक-दूसरे के साथ संगत नहीं हैं। हालाँकि, मैं विशेष रूप से सी के लिए इस विषय पर कुछ भी नहीं पा रहा था। मुझे पता है कि सी मानक संकलक के लिए बहुत सी जगह छोड़ देता है, हालांकि वे चीजों को लागू करने के लिए फिट होते हैं: उदाहरण के लिए, सबसे (सभी?) डेटा प्रकारों का आकार और संरेखण कुछ न्यूनतम गारंटी के लिए कार्यान्वयन-परिभाषित बचत है। इसलिए, दो संकलक (या एक ही संकलक के दो संस्करण) कई विवरणों पर असहमत हो सकते हैं।
क्या मैं यह सोचकर सही हूं कि इस बात की कोई गारंटी नहीं है कि विभिन्न कंपाइलरों के साथ संकलित दो ऑब्जेक्ट फाइलें वास्तव में ठीक से लिंक होंगी? उदाहरण के लिए, पॉइंटर्स का आकार एक ऑब्जेक्ट फ़ाइल में 32 बिट्स और दूसरे में 64 बिट्स हो सकता है। लेकिन अगर ऐसा है, तो C पुस्तकालयों को कभी-कभी पहले से तैयार फॉर्म में क्यों वितरित किया जाता है? क्या कोई उम्मीद है कि मैं उसी कंपाइलर का उपयोग करूँगा जो उन्होंने किया था (उदाहरण के लिए gcc), या द्विआधारी अनुकूलता सुनिश्चित करने के लिए कुछ वास्तविक मानक का उपयोग किया जा रहा है? और विदेशी भाषा इंटरफ़ेस वाली अन्य भाषाएं कैसे सुनिश्चित करती हैं कि सी ऑब्जेक्ट फ़ाइलों के साथ लिंक करते समय चीजें ठीक से लाइन में आएंगी?