gpt4 book ai didi

c++ - 编写跨平台 C++ 代码(Windows、Linux 和 Mac OSX)

转载 作者:IT老高 更新时间:2023-10-28 12:34:06 24 4
gpt4 key购买 nike

这是我第一次尝试用 C++ 编写任何稍微复杂的东西,我正在尝试构建一个可以与 Objective-C 和 .NET 应用程序交互的共享库(好的,这部分稍后会出现...... .)

我的代码是 -

#ifdef TARGET_OS_MAC
// Mac Includes Here
#endif

#ifdef __linux__
// Linux Includes Here
#error Can't be compiled on Linux yet
#endif

#ifdef _WIN32 || _WIN64
// Windows Includes Here
#error Can't be compiled on Windows yet
#endif

#include <iostream>

using namespace std;

bool probe(){
#ifdef TARGET_OS_MAC
return probe_macosx();
#endif
#ifdef __linux__
return probe_linux();
#endif
#ifdef _WIN32 || _WIN64
return probe_win();
#endif
}

bool probe_win(){
// Windows Probe Code Here
return true;
}

int main(){

return 1;
}

我有一个编译器警告,只是 untitled: In function 'bool probe()':untitled:29: warning: control reach end of non-void function - 但我也非常感谢人们可以建议如何更好地编写这种代码的任何信息或资源......

最佳答案

与其重复自己并一次又一次地编写相同的 #ifdef .... 行,不如在头文件中声明 probe() 方法,并提供三个不同的源文件,一个用于每个平台。这还有一个好处是,如果您添加一个平台,您不必修改所有现有源,而只需添加新文件。使用您的构建系统选择适当的源文件。

示例结构:

include/probe.h
src/arch/win32/probe.cpp
src/arch/linux/probe.cpp
src/arch/mac/probe.cpp

警告是因为 probe() 没有返回值。换句话说,三个#ifdefs 都不匹配。

关于c++ - 编写跨平台 C++ 代码(Windows、Linux 和 Mac OSX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com