Why it's valid to include a header file twice in c++?

后端 未结 7 880
迷失自我
迷失自我 2021-02-09 17:25
#include \"DLLDefines.h\"
#include \"DLLDefines.h\"

The above actually passed compilation, but why?

7条回答
  •  灰色年华
    2021-02-09 18:21

    include has nothing to do with the C or C++ language. It is a directive to the preprocessor to bring in a file. The preprocessor doesn't care what file is brought in and it shouldn't. It might be perfectly acceptable to do this:

    void Foo::SomeFunc(int cond)
    {
        switch (cond) {
        case kThisCase:
    #include "longFirstCase.h"
            break;
        case kSecondCase:
    #include "longSecondCase.h"
            break;
        case kThirdCase:
    #include "longFirstCase.h"
    #include "longSecondCase.h"
            break;
        }
    }
    

    I have seen the same file included several times as a configuration mechanism as well.

    Granted, there are a number of ways to factor that example that are better, but the point is that there may be perfectly good reasons why you would want to and therefore no restriction on the use.

提交回复
热议问题