LINUX.ORG.RU

Какие есть библиотека для вывода текста для Си, чтоб было похоже на std::cout?

 , ,


0

2

Есть ли какие-нибудь либы для Си, которые б позволяли похожим на cout образом делать вывод, чтоб ставить выводимую переменную в конкретно ту позицию, где я ее хочу вывести, чтоб без этих %d %f и прочего?

Нечто вроде:

uint16_t price = 100;
uint16_t quantity = 15;
my_print(STR, "Price :", UINT16, price, STR, "; quantity:", UINT16, quantity, END);

// аналог std::cout << "Price :" << price << "; quantity:" << quantity;

★★★★★

Последнее исправление: SZT (всего исправлений: 1)
Ответ на: offtop от Bad_ptr

Здраститя, у вас был проект, вы писали статьи что-то там типа учебника по программированию... Забросили, передумали?

А, я уже и забыл... Пока что не до этого. Может быть продолжу

SZT ★★★★★
() автор топика
Ответ на: комментарий от X512

Лорчую, только вместо простого аборта сделать вывод файла и нимера строки, и до кучи обернуть макросом, который сам вставляет END на конце.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от anonymous

Зря вы так. Классы, шаблоны, constexpr.
Мне коллега показывал код на плюсах для микроконтроллера с 1K памяти - очень красиво и изящно, на простой сишке ты так не напишешь.

cherry_boy
()
Ответ на: комментарий от SZT

Навеяно этим https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms

Незаметно сворован «cloak.h» отсюда https://github.com/pfultz2/Cloak

#include <stdio.h>

#include "cloak.h"

#define HEAD(head, ...) head
#define TAIL(head, ...) __VA_ARGS__

#define TAIL_L(a) (TAIL a)

#define IS_EMPTY(...) \
    IF(IS_PAREN(HEAD(__VA_ARGS__)))( \
        0, \
        NOT(HEAD(IS_EMPTY_TEST __VA_ARGS__ ())) \
    )
#define IS_EMPTY_TEST() 0

#define SLICE2_PRED(a, ...) NOT(IS_EMPTY a)
#define SLICE2_OP_COMMA(a, ...) \
    DEFER(TAIL_L)(DEFER(TAIL_L)(a)), __VA_ARGS__, HEAD a
#define SLICE2_OP(a, ...) \
    DEFER(TAIL_L)(DEFER(TAIL_L)(a)), __VA_ARGS__ HEAD a

#define SLICE2(comma, ...) \
    EXPAND(DEFER(TAIL)( \
        EVAL(WHILE( \
            SLICE2_PRED, \
            IF(comma)(SLICE2_OP_COMMA, SLICE2_OP), \
            (__VA_ARGS__) \
        )) \
    ))

#define PRINT_PAIRS(...) \
    printf( \
        SLICE2(0, __VA_ARGS__) \
        SLICE2(1, TAIL(__VA_ARGS__)) \
    )

int main() {
    PRINT_PAIRS("Hello %s","world"," #%i",1,"!\n");
}
anonymous
()
Ответ на: удаленный комментарий

Вообще-то, 32 и 36-битных.

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

Нуьчик умер после того, как EFG пролюбил домен, и Абу сделал нульчехаркач, а потом убил его (это мое оценочное суждение).

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Это ты зря, чмихуил просо обосрался, дважды. Теперь остаётся сидеть на постнульчанах типа нультиреча.

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

Сейчас- нигде, иногда в ридонли захожу на сосач, альфачан, послнульчанскую пустошь

shkolnick-kun ★★★★★
()

Дружище, если ты в один printf собираешься затолкать столько переменных, что очкуешь в них запутаться, ты явно делаешь что-то не то и не так

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