码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++系统相关操作3 - 获取操作系统的平台类型


    • 1. 关键词
    • 2. sysutil.h
    • 3. sysutil.cpp
    • 4. 测试代码
    • 5. 运行结果
    • 6. 源码地址

    1. 关键词

    C++ 系统调用 操作系统平台类型 跨平台

    2. sysutil.h

    #pragma once
    
    #include 
    #include 
    
    namespace cutl
    {
        /**
         * @brief Operating system platform type.
         *
         */
        enum class os_platform
        {
            /** Windows */
            os_windows,
            /** macOS */
            os_macos,
            /** Linux */
            os_linux,
            /** Unix */
            os_unix,
            /** Unknown */
            os_unknown,
        };
    
        /**
         * @brief Get the platform type for the current operating system.
         *
         * @return platform The operating system platform type.
         */
        os_platform platform_type();
    
        /**
         * @brief Get the platform name for the current operating system.
         *
         * @param type the operating system platform type.
         *
         * @return std::string the platform name.
         */
        std::string platform_name(os_platform type);
    } // namespace cutl

    3. sysutil.cpp

    
    #include 
    #include 
    #include 
    #include 
    #include "sysutil.h"
    #include "inner/logger.h"
    #include "inner/system_util.h"
    #include "inner/filesystem.h"
    
    namespace cutl
    {
        os_platform platform_type()
        {
    #if defined(_WIN32) || defined(__WIN32__)
            // #ifdef _WIN64
            //         std::cout << "64-bit Windows" << std::endl;
            // #else
            //         std::cout << "32-bit Windows" << std::endl;
            // #endif
            return os_platform::os_windows;
    #elif defined(__APPLE__) || defined(__MACH__)
            return os_platform::os_macos;
    #elif defined(__linux__)
            return os_platform::os_linux;
    #elif defined(__unix__)
            return os_platform::os_unix;
    #else
            return os_platform::os_unknown;
    #endif
        }
    
        std::string platform_name(os_platform type)
        {
            static std::map platform_map = {
                {os_platform::os_windows, "Windows"},
                {os_platform::os_macos, "macOS"},
                {os_platform::os_linux, "Linux"},
                {os_platform::os_unix, "Unix"},
                {os_platform::os_unknown, "Unknown"},
            };
    
            auto iter = platform_map.find(type);
            if (iter != platform_map.end())
            {
                return iter->second;
            }
    
            return "unknown";
        }
    } // namespace cutl

    4. 测试代码

    #include "common.hpp"
    #include "sysutil.h"
    
    void TestPlatformName()
    {
        PrintSubTitle("TestPlatformName");
    
        auto type = cutl::platform_type();
        std::cout << "OS platform: " << cutl::platform_name(type) << std::endl;
    }

    5. 运行结果

    ------------------------------------------TestPlatformName------------------------------------------
    OS platform: macOS

    6. 源码地址

    更多详细代码,请查看本人写的C++ 通用工具库: common_util, 本项目已开源,代码简洁,且有详细的文档和Demo。

    本文由博客一文多发平台 OpenWrite 发布!

  • 相关阅读:
    【servelt原理_6_servlet核心接口和类】
    强大的AWS lambda
    CSS 常用样式 文字三属性
    华为交换机端口 access、trunk和hybrid收发数据规则
    ES可视化工具--ElasticHD--下载、安装、使用
    前端随笔0:URL与状态的双向绑定
    谈思生物医疗直播—可瑞生物CEO谢兴旺博士“TCR创新药的现状和展望”
    外骨骼机器人(七):标准步态数据库
    22-07-26 西安 ElasticSearch(01)
    中国驱虫湿巾行业竞争状况与销售前景预测报告2022-2028年
  • 原文地址:https://blog.csdn.net/luoweifu/article/details/139907994
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号