WebKit имеет много строк препроцессора, как это:
#if MACRO1(MACRO2)
Например:
#if PLATFORM(MAC) || (PLATFORM(QT) && USE(QTKIT))
#include "MediaPlayerPrivateQTKit.h"
#if USE(AVFOUNDATION)
#include "MediaPlayerPrivateAVFoundationObjC.h"
#endif
...
Итак, моей первой мыслью было то, что они были функциональными макросами, но я не вижу, как это будет работать, и я не смог найти #defines для этих макросов нигде в исходном коде.
Я спросил другого инженера, что это такое, и он никогда не видел, чтобы несколько макросов использовались так же внутри #if.
Я нашел эту вики-страницу , в которой говорится о них, но мне все еще не было ясно, откуда они взялись,
Итак, мой вопрос: действительно ли это C ++ или он заменяется в коде другим инструментом / языком, таким как CMake или что-то еще, и если это действительно C ++, есть ли какая-нибудь спецификация, которая знает об этом?
Я инженер поддержки для инструмента статического анализа C ++, который не обрабатывает этот синтаксис. Заказчик попросил нас разобраться с этим, но если я собираюсь передать это старшему инженеру, я бы не хотел звучать как идиот :) Так что я бы хотел, чтобы кто-нибудь знал, что это не так.