- Код: Выделить всё • Развернуть
#define A(x) #define B(x)
roboforum.ruТехнический форум по робототехнике. |
|
|
blindman писал(а):
- Код: Выделить всё • Развернуть
#define A(x) #define B(x)
#define A(x) B(x)
#define A(x) #define B(y) x*y
// test.c
#define F(x) (1 ##x## 2)
int a = F(4);
andrey@laptop:~$ gcc -E test.c
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"
int a = (142);
andrey@laptop:~$
vovan@vovan-laptop:/tmp$ cat test2.c
// concat test
#include <stdio.h>
#define FUN(x) (1##x##2)
int v=0;
int main()
{
printf("v=%i\n", v);
v = FUN(0);
printf("v=%i\n", v);
v = FUN(2);
printf("v=%i\n", v);
return 0;
}
vovan@vovan-laptop:/tmp$ gcc test2.c
vovan@vovan-laptop:/tmp$ ./a.out
v=0
v=102
v=122
vovan@vovan-laptop:/tmp$
uint8_t pause0[32];
uint8_t pause1[32];
uint8_t mask0[32];
uint8_t mask1[32];
uint8_t iterator;
#define portHandlerAND(name, port, nextHandler, id) \
void name(void)\
{\
port &= mask0[id]; \
OCR2 += pause0[id]; \
handler = nextHandler; \
}
#define portHandlerOR(name, port, nextHandler, id) \
void name(void)\
{\
port |= mask0[id]; \
OCR2 += pause0[id]; \
for(iterator=0; iterator<pause1[id]; iterator++){
delay_us(1);
};
port |= mask1[id]; \
handler = nextHandler; \
}
#define portHandlers(process, port, nextProcess, id) \
portHandlerOR(##process##3, port, ##nextProcess##0, (id+3))\
portHandlerOR(##process##2, port, ##process##3, (id+2))\
portHandlerOR(##process##1, port, ##process##2, (id+1))\
portHandlerAND(##process##0, port, ##process##1, (id))\
void processD0(void);
portHandlers(processAa, PORTA, processD, 0)
portHandlers(processAb, PORTA, processAa, 4)
portHandlers(processAc, PORTA, processAb, 8)
portHandlers(processAd, PORTA, processAc, 12)
portHandlers(processCa, PORTC, processAd, 16)
portHandlers(processCb, PORTC, processCa, 20)
portHandlers(processB, PORTB, processCb, 24)
portHandlers(processD, PORTD, processB, 28)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2