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 ,以后会在此继续增加.