我正在为unix和windows编写程序,我需要像这样定义文件夹分隔符:#define FOLDER_SEPARATOR "/"
,我需要在编译时理解,哪个系统正在工作,我怎么能理解这个?
我需要这样的东西:
#if defdefine WINDOWS
#define FOLDER_SEPARATOR "\"
#elif defined UNIX
#define FOLDER_SEPARATOR "/"
#endif
告诉我, C 语言中有类似内容,现在我在gcc下编写并使用普通的Makefile,但我需要一些跨平台的东西。
答案 0 :(得分:2)
宏本身不可用,但有一些有用的预处理器符号:
#ifdef _WIN32 //Always defined also on X64 OS
#define FOLDER_SEPARATOR "\\"
#elif defined (__linux__) //Normally defined by linux systems
#define FOLDER_SEPARATOR "/"
#else
#error Unknown system!
#endif
这是定义一个值的常用方法,该值可以在编译时连接到C中的字符串。如果你有:
sprintf(fullpath, "C:" FOLDER_SEPARATOR "%s" FOLDER_SEPARATOR "%s", path, file);
C编译器将创建单个格式字符串:
"C:\%s\%s" //single backslash because it is already in string