💻 Exemplos: Capítulo 01: Ecossistema C++20/C++23 e Estrutura Sequencial

Especialização em Sistemas com C++ • Demonstrações Práticas Compiláveis


🎯 Objetivo dos Exemplos

Apresentar a estrutura canônica de um programa moderno em C++20/C++23: inclusão de cabeçalhos da biblioteca padrão (<iostream>, <format>, <version>), verificação de macros de feature-testing, convenções de compilação com flags estritas (-std=c++20 -Wall -Wextra -Wpedantic) e fluxo sequencial de inicialização.


1. Código Fonte Completo (main.cpp)

/**
 * @file main.cpp
 * @brief Inicialização de runtime de sistemas em C++20/C++23 moderno.
 * Demonstra feature testing, saída formatada e padrões determinísticos.
 */

#include <iostream>
#include <string>
#include <version> // C++20 Feature Testing Macros

// Verificação de suporte a std::format (C++20)
#if __has_include(<format>)
    #include <format>
    #define SUPORTE_FORMAT 1
#else
    #define SUPORTE_FORMAT 0
#endif

int main() {
    std::cout << "=== RUNTIME DE SISTEMAS C++20/C++23 INICIALIZADO ===" << '\n';

    // 1. Detecção da Versão do Padrão C++ pelo Compilador
    long versao_padrao = __cplusplus;
    std::cout << "Versao macro __cplusplus: " << versao_padrao << '\n';

    if (versao_padrao >= 202302L) {
        std::cout << "Compilador operando em conformidade com C++23!" << '\n';
    } else if (versao_padrao >= 202002L) {
        std::cout << "Compilador operando em conformidade com C++20!" << '\n';
    } else {
        std::cout << "Aviso: Compilador em versao legado (C++17 ou anterior)." << '\n';
    }

    // 2. Metadados de Inicialização do Processo
    const std::string subsistema = "KernelTelemetryEngine";
    const unsigned int pid = 18452;
    const double clock_ghz = 3.80;

    std::cout << "Subsistema: " << subsistema 
              << " | PID: " << pid 
              << " | Frequencia CPU: " << clock_ghz << " GHz" << '\n';

    // 3. Formatação Moderna com std::format (ou fallback tradicional)
#if SUPORTE_FORMAT
    std::string relatorio = std::format(
        "Status de Inicializacao -> Modulo: {:<20} | Codigo: 0x{:04X} | Alocacao: {:.2f} MB",
        subsistema, 0xA1B2, 64.50
    );
    std::cout << relatorio << '\n';
#else
    std::cout << "Modulo: " << subsistema << " | Codigo: 0xA1B2 | Alocacao: 64.50 MB" << '\n';
#endif

    std::cout << "==================================================" << '\n';
    std::cout << "Pipeline de execucao sequencial finalizado com sucesso." << '\n';

    return 0; // Código de saída padrão (POSIX EXIT_SUCCESS)
}

2. Instruções de Compilação e Execução

Compile utilizando qualquer um dos compiladores industriais com suporte a C++20:

# Compilação com GCC (g++)
g++ -std=c++20 -Wall -Wextra -Wpedantic -O2 main.cpp -o app_sistema
./app_sistema

# Compilação com Clang (clang++)
clang++ -std=c++20 -Wall -Wextra -O2 main.cpp -o app_sistema
./app_sistema

# Compilação com MSVC (Developer PowerShell no Windows)
cl /std:c++20 /EHsc /W4 /O2 main.cpp /Fe:app_sistema.exe
.\app_sistema.exe

3. Saída Esperada no Terminal

=== RUNTIME DE SISTEMAS C++20/C++23 INICIALIZADO ===
Versao macro __cplusplus: 202002
Compilador operando em conformidade com C++20!
Subsistema: KernelTelemetryEngine | PID: 18452 | Frequencia CPU: 3.8 GHz
Status de Inicializacao -> Modulo: KernelTelemetryEngine | Codigo: 0xA1B2 | Alocacao: 64.50 MB
==================================================
Pipeline de execucao sequencial finalizado com sucesso.