Использование #undef в C ++

Я изучаю фрагмент кода из библиотек GSL и озадачен несколькими строками в начале заголовка файл. Я понимаю, что делают #undef, #ifdef и т. Д., Но я не понимаю, почему они в основном сбросили определение _BEGIN_DECLS, а затем продолжили и определяли его снова? Технически не должно быть никаких предыдущих определений, верно? Я имею в виду, что эти вещи статичны и не подлежат изменениям. В любом случае, вот отрывок из кода:

    #undef __BEGIN_DECLS
    #undef __END_DECLS
    #ifdef __cplusplus
    # define __BEGIN_DECLS extern "C" {
    # define __END_DECLS }
    #else
    # define __BEGIN_DECLS /* empty */
    # define __END_DECLS /* empty */
    #endif
8
задан Brian Tompsett - 汤莱恩 22 June 2016 в 16:32
поделиться