2015-08-29 23 views
0

我写了UNIX和Windows的程序,我需要定义这样的文件夹分隔符ANSI C定义:#define FOLDER_SEPARATOR "/",我需要在编译时明白的,那系统的工作,我怎么能了解这个? 我需要的是这样的:对夹分隔Windows和UNIX

#if defdefine WINDOWS 
#define FOLDER_SEPARATOR "\" 
#elif defined UNIX 
#define FOLDER_SEPARATOR "/" 
#endif 

告诉我,有没有在Ç语言类似的东西,现在我下的gcc写,使用普通的Makefile,但我需要的东西跨平台的。

+0

看:

sprintf(fullpath, "C:" FOLDER_SEPARATOR "%s" FOLDER_SEPARATOR "%s", path, file); 

C编译器会创建一个单一的格式字符串http://sourceforge.net/p/predef/wiki/OperatingSystems/ – Downvoter

+0

标准呢不指定这样的宏。你必须检查操作系统并定义你自己。在使用make时,可能最好使用它来检查,因为可能存在其他差异,例如,平台抽象库。 – Olaf

回答

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即级联,字符串值的常用方法如果您有:这里

"C:\%s\%s" //single backslash because it is already in string 
+1

单个反斜线,C字符串内?肯定会在以后导致问题。 – usr2564301

+1

@Jongware谢谢,我纠正了它。 –