Я пытаюсь написать макрос на основе терминальной строки в C для моих будущих проектов.Пока что все, что у меня есть, это:
#define ANSI_RED "\x1b[31m"
#define ANSI_GREEN "\x1b[32m"
#define ANSI_YELLOW "\x1b[33m"
#define ANSI_BLUE "\x1b[34m"
#define ANSI_MAGENTA "\x1b[35m"
#define ANSI_CYAN "\x1b[36m"
#define ANSI_RESET "\x1b[0m"
#define ANSI_COLOR(color, string) color string ANSI_RESET
#define FOREGROUND 38
#define BACKGROUND 48
#define RGB_COLOR(plane, r, g, b, string) "\033[" plane ";" r ";" g ";" b "m" string ANSI_RESET
Макрос ANSI_COLOR
работает просто отлично, но когда я пытаюсь использовать RGB_COLOR
вот так:
printf( RGB_COLOR(FOREGROUND, 248, 42, 148, "Starting the server:\n") );
Я получаю сообщение об ошибке:
/c-http-server/main.c:17:23: error: expected ')'
printf( RGB_COLOR(FOREGROUND, 248, 42, 148, "Starting the server:\n") );
^
/c-http-server/libs/c-chalk/chalk.h:11:20: note: expanded from macro 'FOREGROUND'
#define FOREGROUND 38
^
/c-http-server/main.c:17:11: note: to match this '('
printf( RGB_COLOR(FOREGROUND, 248, 42, 148, "Starting the server:\n") );
Я искал эту проблему в SO, и большинство решений было связано с поиском дополнительного символа ')', но я не могу найти его в своем коде.
Я был бы рад, если бы кто-нибудь мог помочь мне найти проблему, может быть, я просто слеп и пропустил что-то очевидное.