• Как сформировать строку посредством макросов языка Си?

    @KiVa Автор вопроса
    res2001,
    @KiVa, Вы не правы.

    :-D спасибо, что повеселили! Видимо я как-то не внятно написал:
    К сожалению, ни один из предложенных вариантов не работает.


    Поясняю: представленные макро-подстановки я испробовал в реальном проекте (в том, для которого это всё и нужно) и результат не совпал с требуемым. <Сарказм> Что я делаю не так и при чём здесь моя правота?<\Сарказм>. Ещё раз: реальный результат работы препроцессора вне зависимости от моей правоты не тот, что нужен.

    res2001, давайте посмотрим на вывод препроцессора для варианта от Ivan Bogachev и vanyamba-electronics:
    #define xstr(xxx) str(xxx)
    #define str(xxx) #xxx
    #define mynumber 10
    #define stamp(num) "stamp n." xstr(num)
    
    int main() 
    {
      cout << stamp(mynumber) << endl;
      return 0;
    }


    обращаю внимание на то, что это код Си++, а в вопросе идёт речь только о Си, однако сейчас это не важно. Итак, для представленных макро-определений препроцессор даёт:

    "stamp n." "mynumber"  // строка разрывается кавычкой, далее пробел, потом кавычка


    а надо:

    "stamp n.10"

    действовал так: скопировал представленные макро-определения, вставил в свой код (ANSI C), в нужное место вписал stamp(mynumber) и получил "stamp n." "mynumber", разумеется, компилятор не прожевал разрыв внутри строки кавычками (меж которых пробел). Если внимательно взглянуть на
    #define stamp(num) "stamp n." xstr(num)
    то ничего удивительного.

    Вопрос исчерпан, ответ не найден. Благодарю всех за участие!
  • Как сформировать строку посредством макросов языка Си?

    @KiVa Автор вопроса
    res2001,
    KiVa, пишите макросы большими буквами, в таком виде будете их путать с переменными.

    Строчные буквы, ибо подумал наперед чтоб не травмировать ничьи глаза, а в реальном коде – прописные.

    Благодарю всех, кто откликнулся: Roman, res2001, Ivan Bogachev, vanyamba-electronics. К сожалению, ни один из предложенных вариантов не работает. Много раз смотрел вывод препроцессора в надежде придумать какую-нибудь хитрость, но всё тщетно. Чтение спецификации на компилятор тоже не подкинуло никаких идей. Пробовал множество своих вариантов и также без нужного результата. Вся соль в стрингификации #, из-за которой не происходит подстановка числа, вместо числа ставится имя самого определения и потом всё оборачивается в кавычки, т.е. на выходе "stamp n.number", а не "stamp n.10", иначе говоря, number не раскрывается, хотя stamp n.10 (без кавычек) формируется нормально, но для дальнейшего использования нужно с кавычками.
    Видимо одно из двух: либо моих знаний не хватает, либо этот вопрос не имеет решения. Всем спасибо!
  • Что за компонент на фотографии печатной платы с маркировкой S4?

    @KiVa Автор вопроса
    Думать, что оппонент не умеет пользоваться поиском – это плохой посыл, принижающий его профессиональные и интеллектуальные навыки. И отправлять «голые» ссылки в качестве ответа – что сказать? – ответом на вопрос это быть, ну никак, не может! К тому же по ссылкам информация очень устаревшая, её актуальность на текущий момент крайне сомнительна и всё это я читал ещё до того, как задал свой вопрос. Что касается вопроса, то я сам себе уже помог и уже нашёл ответ (к слову, с ссылками он никак не перекрывается).
  • Что за компонент на фотографии печатной платы с маркировкой S4?

    @KiVa Автор вопроса
    pfg21 Плата преобразователя температуры iTEMP TMT82 от Endress+Hauser. Функцию компонента не определил - идентифицирую компонент как раз с целью найти на него спецификацию и определить назначение/функцию.

    Армянское Радио Разрешение фотки пришлось уменьшить, поскольку Тостер отказывался загружать исходник. К тому же размер компонента очень маленький 1.5 на 1.5 мм. Все дорожки на плате во внутренних слоях, снаружи земли, образующие клетку Фарадея для защиты от наводок. Под микроскопом смотрел - единственная надпись на корпусе компонента это маркировка S4, больше ничего нет. Внешний вид корпуса описан в вопросе. Так что фотка в любом случае не информативна с каким бы качеством она не была.

    Ezhyg Из моего опыта S4 это одиночные диоды от Diodes Incorporated (например, серия SD103CWS), но в данной ситуации это не тот случай.

    Сегодня буду делать отмывку и попытаюсь снять лак с платы - хочу поработать с обвязкой, авось по ней смогу определить назначение компонента. Если у кого-то есть мысли, то буду рад вычитать их.