Source Insight: Покажите мне значения Enum - PullRequest
0 голосов
/ 28 февраля 2010

Я программирую на C и использую Source Insight.

У меня есть тип enum с большим количеством констант (например, 100). У меня есть отладочные распечатки, которые распечатывают значения переменных, но они (конечно) распечатываются как целые числа.

Что я хотел бы сделать, это щелкнуть по имени константы перечисления и увидеть где-нибудь ее числовое значение. (Я видел, как это сделано в плагине Visual Studio, поэтому это должно быть возможно.)

То есть, предположим, у меня есть

enum colors {
    ORANGE, PURPLE, PINK
};

Я хочу щелкнуть (или выбрать, или что-то) PURPLE и увидеть значение 1 где-то видимым (в идеале, окно символов или контекстное окно, но я не особо).

Есть ли простой способ сделать это в Source Insight? По крайней мере, есть ли сложный способ (например, написание макроса)?

1 Ответ

1 голос
/ 15 марта 2010

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

enum colors {
    ORANGE = 0,
    PURPLE = 1,
    PINK = 2
};

Это не здорово, но работает ...

Похоже, можно было бы написать макрос, который отобразил окно сообщения со значением, но я не могу заставить его работать должным образом в 3.50.0064 - кажется, что неправильный enum находится под курсором. Мой код тестового макроса

macro ShowEnum()
{
  symbolname = GetCurSymbol()
  symbol = GetSymbolLocation(symbolname)

  if (symbol == nil)
    Msg (symbolname # "not found")
  else
    Msg (symbolname # " found")
}

Для меня это возвращает случайный элемент из списка enum как найденный. Если возвращено правильное значение, мы можем найти родителя с помощью SymbolParent (), а затем перебрать дочерние элементы с помощью SymbolChildren () / SymListCount ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...