#define SEND_VALUE(num, point1, point2, point3...) \
{ \
char number[6]; \
char p1[6];\
char p2[6];\
char p3[6];\
if(num == ONE) {sprintf(number, "ONE");}\
if(num == TWO) {sprintf(number, "TWO");}\
if(num == THREE) {sprintf(number, "THREE");}\
if(point1 == ONE) {sprintf(p1, "ONE");}\
if(point1 == TWO) {sprintf(p1, "TWO");}\
if(point1 == THREE) {sprintf(p1, "THREE");}\
if(point2 == ONE) {sprintf(p2, "ONE");}\
if(point2 == TWO) {sprintf(p2, "TWO");}\
if(point2 == THREE) {sprintf(p2, "THREE");\
if(point3 == ONE) {sprintf(p3, "ONE");}\
if(point3 == TWO) {sprintf(p3, "TWO");}\
if(point3 == THREE) {sprintf(p3, "THREE");\
fprintf(fp,"%s:%s:%s:%s:\n",number, p1,p2,p3);\
fflush(fp); \
fprintf(fp,fmt,##__VA_ARGS__);\
fflush(fp); \
fprintf(fp,"\n");\
fflush(fp); \
}
На данный момент этот макрос не требует переменности. Но для будущего использования я хочу, чтобы он был переменным. Я не знаю, как написать/определить список аргументов в переменном макросе и как их использовать. Как и в приведенном выше примере, p1, p2 следует установить и распечатать.Передача аргументов в переменный макрос
Я называю этот макрос так:
SEND_VALUE(ONE, ONE, ONE, ONE);
Может кто-то пожалуйста, помогите в достижении этого VARIADIC путь?
Вы имеете в виду способ, как это? http://stackoverflow.com/q/20499983/2003898 – dhein
Вместо этого используйте переменную функцию. – this
Я не знаком с переменными макросами. Может ли кто-нибудь сделать вышеупомянутый код вариативным и опубликовать его здесь? – aod