Получить значение константы препроцессора с помощью clang - PullRequest
2 голосов
/ 05 апреля 2019

Я использую Clang Engine для разбора кода C.Я знаю, как проверить текст под курсором директива препроцессора или нет.Но как получить значение константы препроцессора под курсором?

#include <stdio.h>
#include <clang-c/Index.h>

#define TEST "test"

int main()
{
    char *source_filename = "/home/user1/projects/prep/prep.c";
    CXIndex index;
    CXTranslationUnit tu;
    CXFile file;
    CXSourceLocation loc;
    CXCursor cursor;

    index = clang_createIndex(0, 0);
    tu = clang_createTranslationUnitFromSourceFile(index, source_filename,
            0, NULL, 0, NULL);
    file = clang_getFile(tu, source_filename);
    loc = clang_getLocation(tu, file, 4, 9);
    cursor = clang_getCursor(tu, loc);

    if (clang_isPreprocessing(cursor.kind)) {
        /* How to get TEST constant value? */
    }

    clang_disposeTranslationUnit(tu);
    clang_disposeIndex(index);
}

Еще один вопрос.Должен ли я освободить переменные типов CXFile, CXSourceLocation, CXCursor после работы.Я не могу найти подходящие clang_dispose функции для них.

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