Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Linux和Windows平台下printf和scanf等IO函数对于long long数据的格式化的符号定义是不同的,

那么是否可以把lld通过宏定义成I64d,这样就只需要一个宏定义,然后程序都按照Windows下格式编写即可.

下面是解决方法:

View Code
1 #if 0
2  #define d64 "%I64d"
3  #else
4 #define d64 "%lld"
5 #endif
6 int main()
7 {
8 printf("fuck" d64, 123456LL);
9 return 0;
10 }

在Linux平台下 #if 0 修改为 #if 1

宏在字符串内是不能展开的,所以不能直接定义

#define lld I64d

关于宏的一些其他trick ,以后会在此继续增加.

posted on 2011-06-20 11:51  Jackiesteed  阅读(214)  评论(0编辑  收藏  举报