Code::Blocks подсветка кода в defined

180
23 сентября 2018, 04:30

По отзывам некоторых жителей этого ресурса, установил посмотреть Code::Block.

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

пример на котором такая картина:

libbuild.h:

#if ( \
        defined(_WIN32) || defined(__WIN32__) || defined(_Windows) || \
        defined(_WIN64) || defined(__WIN64__) || \
        defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__))
#   define OS_WIN 1
#endif

test.c

#include "libbuild.h"
    #if defined(OS_WIN)
    static int aaa(int i) { return (i + 1); }
    #else
    static long aaa(long i) { return (i + 1); }
    #endif

при этом подсвечен всегда код long aaa(..). Собирается естественно все правильно, а вот смотреть затруднительно. Сборка при этом проходит под WIN32.

вот как это выглядит:

Есть решение?

Answer 1

Подсветка дефайнов зависит от двух вещей:

  1. От настроек в секции Settings - Editor - General Settings - C/C++ Editor Settings:

  1. От используемой темы оформления. В дефолтной теме это выглядит вот так:

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

Но есть один важный момент: для раскраски синтаксиса текущая версия C:B не учитывает дефайны в инклудах. Воспринимаются только те дефайны, которые объявлены в этом же файле или в настройках проекта (Build Options - Compiler Settings - #defines).

READ ALSO
Ошибка “'recursive_mutex' in namespace 'std' does not name a type” в C++

Ошибка “'recursive_mutex' in namespace 'std' does not name a type” в C++

Взято из кода движка OGRE3d, компилятор выдает ошибку:

188
Ошибка при сохранении строки в БД

Ошибка при сохранении строки в БД

Вот такой код сохраняет переменные в БД

169
Long в качестве индекса массива

Long в качестве индекса массива

Есть фрагмент кода:

238