Il preprocessore e la doppia dichiarazione includono in diversi file

0

Mi chiedo come il compilatore (o il preprocessore) includa le intestazioni. Ho tre file. La prima è intestazione.h, seconda first.cpp < - e c'è #include <iostream> , la terza < - contiene anche #include <iostream> .

header.h:

#ifndef HEADER_H_
#define HEADER_H_

struct Student
{
    std::string imie;
    int ocena;
};


void foo();

#endif

first.cpp:

#include <iostream>
#include "header.h"

int main()
{
    Student Jan;
    std::cout << "It's OK" << std::endl;
    foo();

    return 0;
}

Second.cpp:

#include <iostream>
#include "header.h"

void foo()
{
    std::cout << "I like Linux" << std::endl;
}

E la mia domanda è fare il codice di copia del compilatore dalla libreria due volte? Devo tagliare tutto iostream da .cpp a uno .h?

    
posta diego9403 27.07.2016 - 14:34
fonte

1 risposta

1

Se apri il codice sorgente dell'intestazione iostream , vedrai che include anche la protezione intestazione, il che significa che l'intestazione verrà inclusa solo una volta.

Ad esempio il GCC protegge l'intestazione con la costante _GLIBCXX_IOSTREAM .

    
risposta data 27.07.2016 - 14:46
fonte

Leggi altre domande sui tag