Конкатенация двух переменных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Есть необходимость создать способ для конкатенации двух переменных: первая типа стринг (просто строка вводимая в теле main функции), вторая целочисленная переменная. Хотел создать макрос с использованием директивы ##, однако он подставляет не значение перменной, а ее имя. Вот пример в цикле main:
int main (void)
{
#define SETA_0 0xFF
#define SETA_1 0x59
#define SETA_2 0xF7 //и так довольно много макросов (MAXNUM) для адресов памяти
 
#define concat(a,b) a ## b
#define MAXNUM 100
 
int c;
 
for  (c=0; c<MAXNUM; c++)
{
    PORTA=concat(SETA_,c); //результат выполнения этого макроса = SETA_c
                                       //а надо чтобы вместо с было численное значение, т.е.
                                       //чтобы получалось SETA_0, SETA_1 и т.д.
};
}
Подскажите, можно ли это сделать с использованием макросов? Или придется писать функцию?

Решение задачи: «Конкатенация двух переменных»

textual
Листинг программы
typedef unsigned char byte;
#define SIZE 100
#define SETA_0 0xFF
#define SETA_1 0x59
#define SETA_2 0xF7
// и т.д.
 
byte bArr[SIZE]={SETA_0, SETA_1/*и т.д*/};
 
//Далее по номеру элемента в массиве получаю то, что надо

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы