Rumah > pembangunan bahagian belakang > C++ > Bolehkah Kod Sah dalam Kedua-dua C dan C Berkelakuan Berbeza Apabila Disusun dengan Penyusun Khusus Bahasa?

Bolehkah Kod Sah dalam Kedua-dua C dan C Berkelakuan Berbeza Apabila Disusun dengan Penyusun Khusus Bahasa?

Susan Sarandon
Lepaskan: 2024-11-08 15:10:02
asal
313 orang telah melayarinya

Can Valid Code in Both C and C   Behave Differently When Compiled with Language-Specific Compilers?

Bolehkah Kod Sah dalam Kedua-dua C dan C Berkelakuan Berbeza dengan Penyusun Khusus Bahasa?

C dan C berkongsi banyak persamaan, tetapi perbezaan ketara wujud. Ini menimbulkan persoalan sama ada kod yang sah dalam kedua-dua bahasa mungkin mempamerkan gelagat yang berbeza apabila disusun menggunakan pengkompil khusus untuk setiap bahasa.

Mengabaikan penggodaman berkaitan prapemproses dan menganggap keseragaman dalam aspek yang ditentukan pelaksanaan, satu senario di mana percanggahan tingkah laku sedemikian timbul ialah pengendalian panggilan fungsi dan pengisytiharan objek.

Dalam konteks ini, contoh di bawah menunjukkan perbezaan antara C dan C :

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
Salin selepas log masuk

Dalam C , kod ini mencetuskan penciptaan objek f sementara yang segera dimusnahkan. Oleh itu, ia tidak menghasilkan output.

Sebaliknya, C90 membenarkan fungsi yang tidak diisytiharkan dipanggil. Akibatnya, kod akan mengeluarkan "hello" apabila disusun dengan pengkompil C90.

Perbezaan ini berakar umbi dalam fakta bahawa C90 menganggap perisytiharan f() sebagai panggilan fungsi, manakala C mentafsirkannya sebagai pengisytiharan objek f. Perbezaan ini menyerlahkan nuansa halus yang boleh membawa kepada kelakuan yang berbeza-beza merentas bahasa pengaturcaraan yang berbeza.

Atas ialah kandungan terperinci Bolehkah Kod Sah dalam Kedua-dua C dan C Berkelakuan Berbeza Apabila Disusun dengan Penyusun Khusus Bahasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan