在宏函数中处理varargs的一致方法

时间:2019-01-13 06:41:44

标签: c macros variadic-functions

我正在尝试了解如何一致地处理宏函数中的vararg(即避免titles = ['aaa', 'bbb', 'ccc', 'ddd', 'eee'] html_text = '''<html> <head> <style type="text/css"> table { border-collapse: collapse;} td { text-align: center; border: 5px solid #ff0000; border-style: dashed; font-size: 30px; } </style> </head> <body> <table width="100%" height="100%" border="5px"> <tr> <td>%s</td> </tr> <tr> <td>%s</td> </tr> <tr> <td>%s</td> </tr> <tr> <td>%s</td> </tr> <tr> <td>%s</td> </tr> </table> </body> </html>''' % (titles[0], titles[1], titles[2], titles[3], titles[4]) f = open('temp.html', 'w') f.write(html_text) f.close() 吞下#include<stdio.h> int main() { int test,i,number,num1; char ch; scanf("%d",&test); for(i=test;i>0;i--) { scanf("%d",&number); num1=number; while(num1>12) { num1-=12; } if(num1>0 && num1<7) printf("%d ",(2*(6-num1)+1)+number); else printf("%d ",number-(2*(num1-7)+1)); if(num1==(1 || 6 || 12 || 7 )) { puts("WS"); } if(num1==(2|| 5 || 8 || 11)) { puts("MS"); } if(num1==(3 || 4 || 9 || 10)) { puts("AS"); } } return 0; } 的逗号)。我是这样写的:

gcc

但是它不会生成有效的程序测试。 ##__VA_ARGS__扩展到

#define IS_DEFINED(ARG) strlen(#ARG)
#define FOO(a, ...) \
    if(IS_DEFINED(__VA_ARGS__)){\
        printf(#a, __VA_ARGS__)\
    } else {\
        printf(#a)\
    }

无法编译。

有没有办法处理带有一个参数和vararg的vararg宏函数的情况?

0 个答案:

没有答案