Конкатенация двух переменных - 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/*и т.д*/};
//Далее по номеру элемента в массиве получаю то, что надо