İnline
- C kursu
- İleri seviye
- Ders 76/83
- 5 dk
inline anahtar kelimesi ve makro farkını öğrenirsin.
İnline
inline anahtar kelimesi derleyiciye işlev çağrısını gövdeyle değiştirmeyi önerir. Çağrı yükü (call overhead) ortadan kalkar; küçük işlevlerde performans kazandırır.
Örnek: inline int square_inline(int x) { return x * x; }. Makro (macro) benzer bir etki yapar: #define SQUARE(x) ((x) * (x)). Aradaki fark: inline tür güvenliği sunar ve bağımsız değişkeni bir kez değerlendirir; makro ise metin değişimi yapar ve yan etkileri ikiye katlar. Modern C'de inline tercih edilir.
Kare örneği
5 sayısının karesi 25'tir. square_inline(5) ve SQUARE(5) her ikisi de 25 döner; fark derleme zamanında yatar.
İşlev tanımı: inline int square_inline(int x) { return x * x; }. Makro tanımı: #define SQUARE(x) ((x) * (x)). Makroda her parantez gereklidir; yoksa SQUARE(a+b) yanlış sonuç verir. Main içinde printf("inline: %d\n", square_inline(5)); ve printf("macro: %d\n", SQUARE(5)); yazarsın. Çıktı her ikisinde de 25'tir.
Uygulama İnline ve makro kare
inline int square_inline(int x) yaz: return x * x;. #define SQUARE(x) ((x) * (x)) makrosunu tanımla. main'de printf("inline: %d\n", square_inline(5)); ve printf("macro: %d\n", SQUARE(5));.
Başlangıç kodu
#include <stdio.h>
// inline int square_inline(int x) yaz: x*x döndür
// SQUARE makrosunu tanımla: ((x) * (x))
// main: 5'in karesini her iki yolla da yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
inline int square_inline(int x) { return x * x; }
#define SQUARE(x) ((x) * (x))
int main(void) {
printf("inline: %d\n", square_inline(5));
printf("macro: %d\n", SQUARE(5));
return 0;
}Beklenen çıktı
inline: 25 macro: 25
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Makro ile inline arasındaki temel fark nedir?
- Makro daha yavaştır
- Inline tür güvenliği vermez
- İkisi aynıdır
- Makro yan etkiyi ikiye katlar Doğru cevap
Açıklama: Makro metin değişimi yaptığı için yan etkileri iki kez değerlendirir.
2 İnline ve makro kavramlarını eşle
| Kavram | Anlamı |
|---|---|
inline |
Tür güvenli |
#define |
Metin değişimi |
çağrı yükü |
inline ile kalkar |
yan etki |
Makroda ikiye katlanır |
3 square_inline imzası
inline int square_inline(____) { return x * x; }
inline int square_inline(int x) { return x * x; }
Açıklama: int x parametresi kare alacak değeri taşır.