在C ++中设置基于OS的文件路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++中设置基于OS的文件路径相关的知识,希望对你有一定的参考价值。
我想根据C ++中的操作系统设置文件路径。
我已经研究过使用预处理器调用来完成此操作的方法,但不知道这将如何帮助我在程序本身中设置文件路径。
伪代码大致如下:
string file_path;
if WINDOWS_OS:
file_path = <windows file path>
else if MAC_OS:
file_path = <mac file path>
我希望比我更聪明的人能够引导我走向实现这一目标的最佳方式。谢谢!
答案
预处理器在编译时运行。编译器完成后,将完成程序的最终可执行版本。该可执行文件只能在一个平台(Windows或Mac或Linux)上运行。
因此,没有必要在运行时检查您所在的主机类型。
您编写的代码似乎在代码运行时检查主机类型。这在C ++中是不必要或不合适的。像c#这样创建Byte-Code的语言可以在三个平台中的任何一个上解释,它会在运行时检查主机类型,而不是C ++。
下面是一个示例标头,它在编译时使用预处理器(取自How to detect reliably Mac OS X, iOS, Linux, Windows in C preprocessor?)检查主机类型:
#ifdef _WIN32
//define something for Windows (32-bit and 64-bit, this part is common)
#ifdef _WIN64
//define something for Windows (64-bit only)
#else
//define something for Windows (32-bit only)
#endif
#elif __APPLE__
#include "TargetConditionals.h"
#if TARGET_IPHONE_SIMULATOR
// ios Simulator
#elif TARGET_OS_IPHONE
// iOS device
#elif TARGET_OS_MAC
// Other kinds of Mac OS
#else
# error "Unknown Apple platform"
#endif
#elif __linux__
// linux
#elif __unix__ // all unices not caught above
// Unix
#elif defined(_POSIX_VERSION)
// POSIX
#else
# error "Unknown compiler"
#endif
我仍然对你的问题感到困惑。您是否要求为每个操作系统设置正确的文件路径方法?
以上是关于在C ++中设置基于OS的文件路径的主要内容,如果未能解决你的问题,请参考以下文章