как комментировать значения в #ifdef в одном месте

давайте представим, что у нас есть проект C ++, который должен работать на нескольких платформах (например, arm / arm64), и нам нужно иметь специфические для цели значения для каждой из них.

Прямо сейчас мы делаем:

#ifdef PLATFORM_ARM
#define TIMEOUT_VALUE 0
#define OUR_MAGIC_VALUE 1
#elif PLATFORM_ARM64
#define TIMEOUT_VALUE 2
#define OUR_MAGIC_VALUE 3
#endif

где я могу разместить комментарий для каждого определенного имени, чтобы к нему можно было получить доступ из каждого определения?

Примечание: я не могу определить каждое значение в отдельном #ifdef, например

// a comment for TIMEOUT_VALUE
#ifdef PLATFORM_ARM
#define TIMEOUT_VALUE 0
#elif PLATFORM_ARM64
#define TIMEOUT_VALUE 2
#endif

// a comment for OUR_MAGIC_VALUE
#ifdef PLATFORM_ARM
#define OUR_MAGIC_VALUE 1
#elif PLATFORM_ARM64
#define OUR_MAGIC_VALUE 2
#endif

потому что у меня есть списки и деревья таких значений.

Спасибо.

Изменить 1:
например, у нас есть 6 целей, и 4 из них поддерживают функцию,
поэтому мы пишем:

#if defined(ARM)
#define FEATURE 1
#elif defined(ARM64)
#define FEATURE 0
#elif define(MIPS)
#define FEATURE 1
etc... for other platforms.

тогда у меня есть код, который читает это определение где-то:

#if FEATURE
do something. Note that this part can't be described in a target specific file, because it can have the same implementation for several targets.
#endif

и теперь я хочу иметь место, чтобы описать в целом, что означает и делает эта ОСОБЕННОСТЬ.

1

Решение

Вы можете определить прокси-макрос и написать один комментарий для макроса, который будет использоваться конечным пользователем:

#ifdef PLATFORM_ARM
#define TIMEOUT_VALUE_IMPL 0
#define OUR_MAGIC_VALUE_IMPL 1
#elif PLATFORM_ARM64
#define TIMEOUT_VALUE_IMPL 2
#define OUR_MAGIC_VALUE_IMPL 3
#endif

// a comment for TIMEOUT_VALUE
#define TIMEOUT_VALUE TIMEOUT_VALUE_IMPL

// a comment for OUR_MAGIC_VALUE
#define OUR_MAGIC_VALUE OUR_MAGIC_VALUE_IMPL

Вы также можете рассмотреть возможность использования констант вместо макросов.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector