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 ++, который не справляется с этим синтаксис. Клиент попросил нас разобраться с этим, но если я собираюсь передать это старшему инженеру, я бы не хотел звучать как идиот :) Так что я хотел бы, чтобы это было мелочью, если кто-то это знает.