Vakiot
Sellaiset tiedot, joita ei haluta muuttaa ohjelman suorituksen aikana, kannattaa määritellä vakioiksi. Esimerkiksi pii on koko ohjelman ajan sama.
...
Code Block |
---|
const volatile unsigned char \*port=0x30;
|
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).