CAPL: Как иметь одинаковое имя члена перечисления в разных перечислениях? - PullRequest
0 голосов
/ 11 июня 2018

Я хочу сделать так, чтобы я мог использовать один и тот же элемент перечисления имя в разных перечислениях, например:

enum OPTION_1
{
    ACTIVATED   = 1,
    DEACTIVATED = 0
};

enum OPTION_2
{
    ACTIVATED   = 1,
    OFF         = 0
};

Когда я пытаюсь скомпилировать это, я получаю ошибку: Дублирующее имя перечислителя"ACTIVATED".

Я нашел похожий вопрос, но для языка C ++ c ++, как получить одно и то же имя члена перечисления в разных именах перечисления без получения err: redefinition;предыдущее определение было «enumerator»

Я пробовал решения, показанные там, но я не мог реализовать их в CAPL.Мой вопрос заключается в том, могу ли я иметь перечисления с разными именами, но с одинаковыми именами членов;если это возможно, как это может быть реализовано в CAPL?

1 Ответ

0 голосов
/ 27 июня 2018

Существует обходной путь, который действительно уродлив, нет рекомендации делать это.

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

Value Table Editor for CANoe-sysvar

И затем вы можете повторно использовать это перечисление в CAPL-коде:

variables{
  enum VtSv_foo_myEnum1 var1;
  enum VtSv_myEnum2 var2;
}

do_foo(){
  var1 = (enum VtSv_foo_myEnum1) sysvar::foo::myEnum1::One;
  var2 = (enum VtSv_myEnum2) sysvar::myEnum2::One;  
}

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

А в справке по CANoe вы можете найти больше информации:

CAPL Введение »Основы» Типы перечисления

...