Допустим ли этот макрос для C ++ или чего-то еще? И если это разрешено законом, как это работает

WebKit имеет много таких строк препроцессора: #if MACRO1 (MACRO2)

Например:

#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
#include "MediaPlayerPrivateQTKit.h"
#if USE(AVFOUNDATION)
#include "MediaPlayerPrivateAVFoundationObjC.h"
#endif
...

Итак, моя первая мысль заключалась в том, что это макросы, похожие на функции, но я не могу понять, как это будет работать, и не смог найти ни одного # определяет для этих макросов в любом месте исходного кода.

Я спросил другого инженера, что это было, и он никогда раньше не видел, чтобы несколько макросов использовались таким образом внутри #if. Я нашел эту вики-страницу , которая рассказывает о них, но мне все еще не было ясно, откуда они взялись,

Итак, мой вопрос: это действительный C ++ или он заменяется в коде на другой инструмент / язык, такой как CMake или что-то еще, и если это действительно C ++, есть ли известная кому-либо спецификация, в которой говорится об этом?

Я инженер службы поддержки инструмента статического анализа C ++, который не справляется с этим синтаксис. Клиент попросил нас разобраться с этим, но если я собираюсь передать это старшему инженеру, я бы не хотел звучать как идиот :) Так что я хотел бы, чтобы это было мелочью, если кто-то это знает.

6
задан Brian Tompsett - 汤莱恩 22 June 2016 в 13:55
поделиться