Bagikan melalui


Kelas Penyimpanan

Penentu kelas penyimpanan dalam definisi fungsi memberikan fungsi baik extern atau static kelas penyimpanan.

Sintaks

function-definition:
declaration-specifiers optattribute-seq optdeclaratordeclaration-listoptcompound-statement

/* attribute-seq adalah khusus untuk Microsoft */

declaration-specifiers:
storage-class-specifier declaration-specifiers Memilih
type-specifier declaration-specifiers Memilih
type-qualifier declaration-specifiers Memilih

storage-class-specifier: /* Untuk definisi fungsi */
extern
static

Jika definisi fungsi tidak menyertakan storage-class-specifier, kelas penyimpanan default ke extern. Anda dapat secara eksplisit mendeklarasikan fungsi sebagai extern, tetapi tidak diperlukan.

Jika deklarasi fungsi berisi storage-class-specifierextern, pengidentifikasi memiliki tautan yang sama dengan deklarasi pengidentifikasi yang terlihat dengan cakupan file. Jika tidak ada deklarasi yang terlihat dengan cakupan file, pengidentifikasi memiliki tautan eksternal. Jika pengidentifikasi memiliki cakupan file dan tidak ada storage-class-specifier, pengidentifikasi memiliki tautan eksternal. Tautan eksternal berarti bahwa setiap instans pengidentifikasi menunjukkan objek atau fungsi yang sama. Untuk informasi selengkapnya tentang tautan dan cakupan file, lihat Masa Pakai, Cakupan, Visibilitas, dan Linkage.

Deklarasi fungsi cakupan blok dengan penentu kelas penyimpanan selain extern menghasilkan kesalahan.

Fungsi dengan static kelas penyimpanan hanya terlihat dalam file sumber tempat fungsi ditentukan. Semua fungsi lain, baik yang diberikan extern kelas penyimpanan secara eksplisit atau implisit, terlihat di semua file sumber dalam program. Jika kelas penyimpanan static diinginkan, kelas tersebut harus dideklarasikan pada kemunculan pertama deklarasi (jika ada) fungsi, dan pada definisi fungsi.

Khusus Microsoft

Ketika ekstensi Microsoft diaktifkan, fungsi yang awalnya dideklarasikan tanpa kelas penyimpanan (atau dengan extern kelas penyimpanan) diberikan static kelas penyimpanan jika definisi fungsi berada dalam file sumber yang sama dan jika definisi secara eksplisit menentukan static kelas penyimpanan.

Saat dikompilasi dengan opsi kompilator /Ze, fungsi yang dideklarasikan dalam blok menggunakan extern kata kunci memiliki visibilitas global, yang tidak benar saat mengkompilasi dengan /Za. Fitur ini tidak boleh diandalkan jika portabilitas kode sumber adalah pertimbangan.

END Khusus Microsoft

Lihat juga

Definisi Fungsi C