代码
visual studio 版本
#define _CRLF(a) #a
#define CRLF() _CRLF(\n)
#define _PRINT_RN(__s1__, __s2__) __s1__##__s2__
#define PRINT_RN(__s1__, __s2__) _PRINT_RN(__s1__, __s2__)
#define _u_print(__s1__, ...) printf(__s1__, __VA_ARGS__)
#define u_print(__s1__, ...) _u_print(PRINT_RN(__s1__, CRLF()), __VA_ARGS__)
keil 版本
#define CR_LF_IS_WHITCH 0
#if (CR_LF_IS_WHITCH == 0)
#define CRLF_STR \r\n
#elif (CR_LF_IS_WHITCH == 1)
#define CRLF_STR \n
#elif (CR_LF_IS_WHITCH == 2)
#define CRLF_STR \r
#endif
#define _PRINT_RN(__s1__, __s2__) __s1__#__s2__
#define PRINT_RN(__s1__, __s2__) _PRINT_RN(__s1__, __s2__)
#define _u_print(__s1__, ...) U_Printf(__s1__, __VA_ARGS__)
#define u_print(__s1__, ...) _u_print(PRINT_RN(__s1__, CRLF_STR), __VA_ARGS__)
效果
visual studio 效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/e7d8323d23f34a24bf0bac3d8371c42e.png)
keil 效果
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb0aa1c4193847f1a354acbe27255f16.png)