CodeBlanks Logo Icon CodeBlanks

Free-standing

Free-standing C++ ve std lib kısıtlarını öğrenirsin.

Free-standing

C++ standartları iki uygulama türü tanımlar: hosted (işletim sistemi var, std::cout, std::vector gibi araçlar kullanılabilir) ve freestanding (işletim sistemi yok, yalnızca minimum başlıklar).

Freestanding uygulamada main zorunlu değildir; giriş noktası donanıma bağlıdır (örneğin Reset_Handler). Kullanılabilir başlıklar sınırlıdır: <cstdint>, <cstddef>, <new>, <type_traits>. Bu başlıklara freestanding headers denir; işletim sistemi gerektirmezler.

Freestanding başlıklar

Freestanding başlıklar şunlardır: <cstdint> (sabit genişlikli tam sayılar), <cstddef> (std::size_t, nullptr_t), <limits>, <type_traits>, <new>. Bunlar işletim sistemi çağrısı yapmaz.

Buna karşılık <iostream>, <vector>, <string> hosted başlıklardır; dinamik bellek ve işletim sistemi ister. Gömülü sistemlerde bu başlıklardan kaçınılır; yerine std::uint32_t gibi freestanding türleri kullanılır. Bu, programın her donanımda çalışmasını sağlar.

Uygulama Freestanding türlerle add yaz

std::uint32_t add(std::uint32_t a, std::uint32_t b) yaz; gövdesi return a + b;. main içinde std::cout << add(3, 4); yaz.

Başlangıç kodu

main.cpp
#include <iostream>
#include <cstdint>

// add fonksiyonunu buraya tanımla

int main() {
    // add'i çağır ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <cstdint>

std::uint32_t add(std::uint32_t a, std::uint32_t b) {
    return a + b;
}

int main() {
    std::cout << add(3, 4);
    return 0;
}

Beklenen çıktı

7

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Başlığı türüne eşle

Kavram Anlamı
freestanding İşletim sistemi yok
hosted İşletim sistemi var
<cstdint> Freestanding başlık
<iostream> Hosted başlık

2 uint32_t türünü tamamla

Soru
std::_____t counter = 0;
Cevap
std::uint32_t counter = 0;

Açıklama: std::uint32_t 32 bitlik işaretsiz tam sayıdır.

3 Hangi başlık freestanding'tir?

main.cpp
// #include <...>
  • <cstdint> Doğru cevap
  • <iostream>
  • <vector>
  • <string>

Açıklama: <cstdint> freestanding başlıktır; işletim sistemi gerektirmez.

Uzman bölümündeki tüm dersler