Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Antara `sebaris`, `sebaris statik` dan `sebaris luar` dalam C dan C ?

Apakah Perbezaan Antara `sebaris`, `sebaris statik` dan `sebaris luar` dalam C dan C ?

Barbara Streisand
Barbara Streisandasal
2024-12-24 17:51:11268semak imbas

What's the Difference Between `inline`, `static inline`, and `extern inline` in C and C  ?

Memahami sebaris luar

Dalam bahasa pengaturcaraan C, fungsi sebaris menawarkan petunjuk kepada pengkompil untuk mengoptimumkan kod secara berpotensi dengan memasukkan badan fungsi secara terus pada titik seruan dan bukannya menghasilkan subrutin yang berasingan panggilan.

Perbezaan antara variasi sebaris

Dalam K&R C dan C89, tiada semantik standard untuk sebaris, tetapi banyak penyusun menyokongnya dengan tafsiran yang berbeza-beza. GCC memperkenalkan tiga variasi: sebaris, sebaris statik dan sebaris luar.

  • sebaris: Mencadangkan pengoptimuman sebaris, tetapi versi luar talian turut dijana. Hanya satu takrifan boleh wujud merentas unit kompilasi.
  • sebaris luar: Serupa dengan sebaris, tetapi tiada versi luar talian dijana. Walau bagaimanapun, panggilan ke versi luar talian boleh dibuat, yang mesti wujud dalam unit kompilasi lain.
  • baris statik: Menghasilkan fail statik, tetapi tidak boleh dilihat secara luaran, versi sebaris. Tiada versi luar talian dijana.

C99 dan GNU99

Dalam C99, semantik untuk sebaris luar telah disemak untuk mencerminkan gelagat sebaris GNU89. Sebaris dan sebaris statik kekal sama.

C

Dalam C , fungsi sebaris mesti mempunyai takrifan yang sama di mana-mana sahaja ia digunakan. Takrifan berbilang simbol yang sama dikendalikan oleh pengkompil/penyambung. Sebaris statik mahupun sebaris luar tidak ditakrifkan dalam C , walaupun sesetengah penyusun mungkin menyokongnya.

Memastikan sebaris dengan sebaris luar

Dalam senario khusus anda, di mana anda memerlukan sebaris untuk fungsi menggunakan FAIL dan Makro LINE, sebaris luar tidak menjamin bahawa fungsi akan sebaris. Walau bagaimanapun, ia adalah setara C99 yang paling hampir untuk mencapai tingkah laku yang diingini ini. Jika fungsi tidak diselaraskan, pengkompil atau pemaut mungkin mengeluarkan ralat.

Perbezaan pengkompil dan vendor

Gelagat merentas vendor dan versi pengkompil yang berbeza boleh berbeza-beza, jadi sentiasa dinasihatkan untuk merujuk dokumentasi khusus untuk persekitaran anda.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `sebaris`, `sebaris statik` dan `sebaris luar` dalam C dan C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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