Конкатенация двух переменных - 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/*и т.д*/}; //Далее по номеру элемента в массиве получаю то, что надо
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д