要想一份代码在linux下能编译,在windows下也能编译,就得应用宏处理。最初产生这个构想,是在学习opengl的时候,发觉glut库是跨平台的,查看源代码后发觉glut里面进行了很多宏处理。这是第一次知道编译器在进行编译的时候也会定义一些宏关键字。
程序结果如下:
在win8系统下,用devcpp编译的结果
在linux下用gcc编译的结果
参考链接: http://blog.csdn.net/liangbch/article/details/36020391
源代码:
#include < stdio.h
>
void test(){
int len=sizeof(int)*8;
printf("sizeof(int)=%d\n",len);
len=sizeof(int *)*8;
printf("sizeof(int*)=%d\n",len);
#ifdef _MSC_VER
printf("_MSC_VER is defined\n");
#endif
#ifdef __GNUC__
printf("__GNUC__ is defined\n");
#endif
#ifdef __INTEL__
printf("__INTEL__
is defined\n");
#endif
#ifdef __i386__
printf("__i386__
is defined\n");
#endif
#ifdef __x86_64__
printf("__x86_64__
is defined\n");
#endif
#ifdef _WIN32
printf("_WIN32 is defined\n");
#endif
#ifdef _WIN64
printf("_WIN64 is defined\n");
#endif
#ifdef __linux__
printf("__linux__ is defined\n");
#endif
#ifdef __LP64__
printf("__LP64__ is defined\n");
#endif
#ifdef __amd64
printf("__amd64 is defined\n");
#endif
}
int main(int argc, char* argv[])
{
test();
return 0;
}
程序结果如下:
在win8系统下,用devcpp编译的结果
在linux下用gcc编译的结果
参考链接: http://blog.csdn.net/liangbch/article/details/36020391
源代码:
#include <
void test(){
#ifdef _MSC_VER
#endif
#ifdef __GNUC__
#endif
#ifdef __INTEL__
#endif
#ifdef __i386__
#endif
#ifdef __x86_64__
#endif
#ifdef _WIN32
#endif
#ifdef _WIN64
#endif
#ifdef __linux__
#endif
#ifdef __LP64__
#endif
#ifdef __amd64
#endif
}
int main(int argc, char* argv[])
{
}