终于学LINUX下的东西了, 工作也没工作这行, 不过一直思考了好长时间,
移植问题是一大块难点. 终于会了, 移植的定义.
这是小例子, 只是试一下. 什么都是从一点点开始.
//hello.c文件
#include <stdio.h>
#include <string.h>
int main()
{
#ifdef WIN32 //WINDOWS 上以定义
printf("WIN32 hello world 1\n");
#elif defined(OS_POSIX)
printf("linux hello world 2\n");
#endif
return 0;
}
这程序在WINDOWS下直接运行,
LINUX命命行:
$ gcc -DOS_POSIX -o hello hello.c
$ ./hello
linux hello world 2
$
gcc -D 编译时定义宏/宏定义(用户程序中的宏)
-D name, Predefine name as a macro, with definition 1.(给所编译文件定义一个宏其值为1)
# vi test.c --------------------------------- #include <stdio.h>
#define ADD(x, y) (x) + (y) + 10 #undef ADD #define ADD(x, y) (x) + (y)
#undef PDEBUG /* undef it, just in case */ #ifdef
DEBUG
#define PDEBUG(fmt, args...) printf("cmmb_inno: line %d - %s():"fmt, __LINE__, __FUNCTION__, ##args) #else #definePDEBUG(fmt, args...) #endif
int main() { PDEBUG("%s and %s\n", "zengxl", "luol"); printf("10 + 8 = %d\n", ADD(10, 8)); }
-------------------------------- # gcc test.c -D DEBUG # ./a.out cmmb_inno: line 16 - main():zengxl and luol 10 + 8 = 18 # gcc test.c # ./a.out 10 + 8 = 18
|