Bolehkah Kod Sah dalam Kedua-dua C dan C Berkelakuan Berbeza Apabila Disusun dalam Setiap Bahasa?
C dan C berkongsi banyak persamaan, tetapi kod tertentu binaan boleh menghasilkan hasil yang berbeza apabila disusun dalam bahasa ini, walaupun jika kod itu sah dari segi sintaksis dalam kedua-duanya.
Panggilan Fungsi lwn. Pengisytiharan Objek
Satu senario sedemikian melibatkan fungsi panggilan. Dalam C90, fungsi boleh dipanggil tanpa pengisytiharan terlebih dahulu. Walau bagaimanapun, dalam C , objek jenis f dicipta apabila f() dipanggil tanpa pengisytiharan.
Contoh Kod:
Pertimbangkan kod berikut:
#include <stdio.h> struct f { int x; }; int main() { f(); } int f() { return printf("hello"); }
Perbezaan Tingkah Laku:
Pertimbangan Versi:
Tingkah laku ini perbezaan adalah khusus untuk C90. Dalam versi piawai C yang lebih baru (cth., C99), ia tidak lagi sah untuk memanggil fungsi tanpa pengisytiharan. Akibatnya, kod akan berkelakuan sama dalam kedua-dua C dan C .
Atas ialah kandungan terperinci Bolehkah Panggilan Fungsi Berperilaku Berbeza dalam C dan C Walaupun Kod Sah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!