Есть ли способ проверить тип значения символа препроцессора в C/C++

Часть моего кода зависит от значения символа препроцессора:

int a()
{
#if SDK_VERSION >= 3
    return 1;
#else
    return 2;
#endif
}

Сравнение зависит от значения SDK_VERSION. Ожидается, что оно будет целым числом или чем-то, что сравнивается с целым числом, в данном случае 3. Если SDK_VERSION будет чем-то, что нельзя сравнить с целым числом, возникнет ошибка компиляции.

Есть ли способ прервать компиляцию, если SDK_VERSION не имеет ожидаемого типа? For example:

#if type(SDK_VERSION) != int  # Does not compile, I know
#error "SDK_VERSION must be an integer."
#endif
8
задан Brian Tompsett - 汤莱恩 7 April 2016 в 13:02
поделиться