Vakiot
Sellaiset tiedot, joita ei haluta muuttaa ohjelman suorituksen aikana, kannattaa määritellä vakioiksi. Esimerkiksi pii on koko ohjelman ajan sama.
...
Ohjelma lukee portilta, jonka heksadesimaalinen osoite on 0x30, arvon, jonka ohjelma ymmärtää vakiona ja siten se kykenee ainoastaan käyttämään ko. muuttujan arvoa, muttei muuttamaan sitä. Volatile-määre tarkoittaa sitä, että muuttujan arvo päivitetään joka viittauskerran yhteydessä, sillä tieto voi muuttua milloin vain.
Esikääntäjän ohjaaminen
Seuraavassa esikääntäjälle ohjeet siitä mitä ohjelman osia otetaan mukaan käännökseen:
...
Code Block |
---|
#define LINUX // Määritellään LINUX #ifndef LINUX // tämä mukaan jos LINUX ei ole määritelty #else // tämä mukaan jos LINUX on määritelty #endif // !LINUX |
Useamman headerin käännösongelman ratkaisu
Kun samaa header-tiedostoa käyttää useampi käännösyksikkö (.cpp-tiedosto), tulee huolehtia, että headerin sisältö tulee ohjelmaan vain kerran (muuten tulee päällekkäisiä määrityksiä). Se hoidetaan esikääntäjää ohjaamalla:
Code Block |
---|
#ifndef Luokka_h #define Luokka_h // Headerin sisältö tulee #ifndef ja #endif väliin. Tyyliin: // class CLuokka //{ { // ... // } ; \\ #endif // Luokka_h |
Tämän kun lisää jokaiseen header-tiedostoon, niin välttyy ongelmilta. Jotkin C++ kehitysympäristöt lisäävät nämä automaattisesti ja Microsoft Visual Studio lisää oman #pragma once -määrittelynsä joka ajaa saman asia, eikä luultavastikaan toimi muissa kääntäjissä (ei varmistettu).