简短回答:可以,但有限制、需要做好规划。Linux 下用 C++ 写的东西不一定能直接在其他平台跑,但完全可以通过合理设计实现跨平台。
下面分点说清楚。
C++ 是标准语言(ISO C++),只要:
std:: 那一套)那么同一份代码在:
都可以编译运行。
✅ 例子(可跨平台):
#include <iostream>
int main() {
std::cout << "hello\n";
}
问题通常出在平台相关部分:
| 功能 | Linux | Windows |
|---|---|---|
| 线程 | pthread | Windows API |
| 文件 | open | CreateFile |
| 网络 | socket | Winsock |
| 动态库 | .so | .dll |
➡ 直接调用这些,不跨平台
有些:
有些库:
#ifdef _WIN32
// Windows 实现
#else
// Linux 实现
#endif
或封装成统一接口:
class File {
public:
static File* open(const std::string& path);
};
if(WIN32)
target_sources(app PRIVATE win_impl.cpp)
else()
target_sources(app PRIVATE linux_impl.cpp)
endif()
project/
├── src/
│ ├── common/
│ ├── platform/
│ │ ├── linux/
│ │ └── windows/
├── include/
├── CMakeLists.txt
✅ Linux C++ 能跨平台
❌ 但不是“写一次,到处跑”
✅ 要靠:标准 C++ + 跨平台库 + 架构设计
如果你愿意,可以告诉我:
我可以直接给你适合的跨平台方案或代码模板。