Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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