Saya mengerti bahwa kompiler C ++ tidak kompatibel satu sama lain. Namun, saya tidak dapat menemukan apapun tentang topik ini untuk C khususnya. Saya tahu bahwa standar C menyisakan banyak ruang bagi kompiler untuk mengimplementasikan hal-hal yang mereka anggap cocok: misalnya, ukuran dan penyelarasan sebagian besar (semua?) Tipe data ditentukan oleh implementasi, hemat untuk beberapa jaminan minimal. Oleh karena itu, dua kompiler (atau dua versi dari kompiler yang sama) dapat tidak setuju pada banyak detail.
Apakah saya benar dalam berpikir bahwa tidak ada jaminan bahwa dua file objek yang dikompilasi dengan kompiler yang berbeda akan terhubung dengan benar? Misalnya, ukuran pointer bisa 32 bit di satu file objek dan 64 bit di yang lain. Tetapi jika demikian, mengapa perpustakaan C kadang-kadang didistribusikan dalam bentuk yang dikompilasi? Apakah ada harapan bahwa saya akan menggunakan kompiler yang sama seperti yang mereka lakukan (misalnya gcc), atau standar de facto yang digunakan untuk memastikan kompatibilitas biner? Dan bagaimana bahasa lain dengan Antarmuka Bahasa Asing memastikan hal-hal akan berbaris dengan benar ketika menghubungkan dengan file objek C?