====== Alcuni veloci appunti su C++ ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 10/09/2026 13:45 //** // // Ho fatto alcune pagine simili su Rust e Go, quindi perchè non farle anche su C++. Si preferirà uno standard moderno. ===== Buone pratiche ===== Dato che il C/C++ offrono massima libertà nella gestine della memoria, possono (e non devono) essere pericolosi . Dunque ho raccolto alcune buone pratiche da tenere a mente qui: [[programmazione:cpp:buone_pratiche|Buone pratiche di programmazione in C/C++]] ===== Try/catch ===== try { ...le mie istruzioni... } catch (const std::exception& e) { // Intercetta std::exception e tutte le sue classi derivate std::cerr << "Errore intercettato: " << e.what() << std::endl; } catch (...) { // Il "catch-all" intercetta qualsiasi cosa che non sia derivata da std::exception std::cerr << "Errore sconosciuto: è stata lanciata un'eccezione non standard." << std::endl; } ===== Thread ===== Lanciare un thread e proseguire col thread principale. std::thread mio_thread([] { std::cout << "Eseguito in un thread separato\n"; }); ===== Determinare se una porta tcp è aperta o no ===== La funzione ritorna true se è aperta false altrimenti. #include #include #include #include #include #include bool is_port_ready(const char* host, int port) { int socket_fd = socket(AF_INET, SOCK_STREAM, 0); if (socket_fd < 0) return false; sockaddr_in address{}; address.sin_family = AF_INET; address.sin_port = htons(port); if (inet_pton(AF_INET, host, &address.sin_addr) != 1) { close(socket_fd); return false; } bool is_ready = connect( socket_fd, reinterpret_cast(&address), sizeof(address) ) == 0; close(socket_fd); return is_ready; } Si potrebbe usare così: ... std::thread server([&] { mioservertcp.run(); //server di esempio }); // Attende che abbia aperto la porta while (!is_port_ready("127.0.0.1", 8080)) { std::this_thread::sleep_for(std::chrono::milliseconds(10)); } // A questo punto il server è raggiungibile std::system("xdg-open http://127.0.0.1:8080/fmt"); server.join(); Il mio server tcp viene eseguito su un thread esterno e il main attende 10 millisecondi finchè la porta non sia disponibile. Quando è disponibile in questo caso lancia un browser su quell'indirizzo. Infine aspettiamo che il thread termini.