LINUX.ORG.RU

ESCAPE-последовательности в define

 , ,


0

1

Собственно хочу замутить макрос для переноса каретки:

#include <stdio.h>

#define CLRSCR "\033c"
#define GOTOXY(x, y) "\033[x;yH"

int ClearScr(void)
{
	printf(CLRSCR);
	return 0;
}

int Out(int x, int y, char* string)
{
	printf(GOTOXY(x, y), string);
	return 0;
}

ClrScr работает, Out - фига - выводит мусор.

Вывод вставить сюда не могу, ЛОР пишет:

0x1b is not a legal XML character

★★★

Последнее исправление: AlexCones (всего исправлений: 1)

define определяется на этапе компиляции, а ты пытаешься его менять во время работы. Делай функцию.

gman
()
Ответ на: комментарий от buddhist

Как уже сказали выше, макрос раскрывается на этапе компиляции, при этом значениям x и y становятся литералы «x» и «y».

Можно написать, например, так:

#define GOTOXY(x, y) "\033[%i;%iH%s", y, x

Но это выглядит как костыль.

buddhist ★★★★★
()

Пожалуйста, используйте ncurses или функции. Макросы используйте по-минимуму.

schizoid ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.