条件编译小结

通过C++跨平台的预编译宏来区分不同的操作系统:Win32/Win64/Unix/Linux/MacOS 操作系统宏定义说明_WIN32_WIN64Apple__APPLE__Apple__MACH__iPhoneMacOSAndroid__unix__Linux__linux__Solaris__sunHP UX__hpuxBSDBSDFreeBSDNetBSD__NetBSD__OpenBSD请注意,宏对 GNU GCC 和 G++ 有效,并且可能因其他编译器而异。我们将通过一些基本示例,并探讨这些功能在现实生活中的使用。 阅读详情

编码的时候经常要用到条件编译,每次都到网上去查比较浪费时间,今天总结一下以备后用

 

  • 编译器
    • GCC
      #ifdef __GNUC__
      • #if __GNUC__ >= 3 // GCC3.0以上
    • Visual C++
      #ifdef _MSC_VER(非VC编译器很多地方也有定义)
      • #if _MSC_VER >=1000 // VC++4.0以上
      • #if _MSC_VER >=1100 // VC++5.0以上
      • #if _MSC_VER >=1200 // VC++6.0以上
      • #if _MSC_VER >=1300 // VC2003以上
      • #if _MSC_VER >=1400 // VC2005以上
    • Borland C++
      #ifdef __BORLANDC__
  • UNIX
    • UNIX
      #ifdef __unix
      or
      #ifdef __unix__
    • Linux
      #ifdef __linux
      or
      #ifdef __linux__
    • FreeBSD
      #ifdef __FreeBSD__
    • NetBSD
      #ifdef __NetBSD__
  • Windows
    • 32bit
      #ifdef _WIN32(或者WIN32)
    • 64bit
      #ifdef _WIN64
    • GUI  App
      #ifdef _WINDOWS 
    • CUI  App
      #ifdef _CONSOLE
    • Windows的Ver … WINVER
      ※ PC机Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了
      • #if (WINVER >= 0x030a) // Windows 3.1以上
      • #if (WINVER >= 0x0400) // Windows 95/NT4.0以上
      • #if (WINVER >= 0x0410) // Windows 98以上
      • #if (WINVER >= 0x0500) // Windows Me/2000以上
      • #if (WINVER >= 0x0501) // Windows XP以上
      • #if (WINVER >= 0x0600) // Windows Vista以上
    • Windows 95/98/Me的Ver … _WIN32_WINDOWS
      • MFC App、PC机上(Windows CE没有定义)
        #ifdef _WIN32_WINDOWS
      • #if (_WIN32_WINDOWS >= 0x0400) // Windows 95以上
      • #if (_WIN32_WINDOWS >= 0x0410) // Windows 98以上
      • #if (_WIN32_WINDOWS >= 0x0500) // Windows Me以上
    • Windows NT的Ver … _WIN32_WINNT
      • #if (_WIN32_WINNT >= 0x0500) // Windows 2000以上
      • #if (_WIN32_WINNT >= 0x0501) // Windows XP以上
      • #if (_WIN32_WINNT >= 0x0600) // Windows Vista以上
    • Windows CE(PocketPC)
      #ifdef _WIN32_WCE
    • Windows CE … WINCEOSVER
    • Windows CE
      WCE_IF
    • Internet Explorer的Ver … _WIN32_IE 
  • Cygwin
    • Cygwin
      #ifdef __CYGWIN__
    • 32bit版Cygwin(现在好像还没有64bit版)
      #ifdef __CYGWIN32__
    • MinGW(-mno-cygwin指定)
      #ifdef __MINGW32__

 

Qt在pro中实现条件编译 Qt在pro中实现条件编译 --小结:自己正在参与的项目中需要一套代码在Windows和Linux下交叉编译,实现中使用了条件编译(#ifdef WINDOWS #endif  #ifdef LINUX endif),然后在选择编译版本的试试在Qt的.pro文件中,编写如下代码: DEFINES += WINDOWS #DEFINES += LINUX if(contains( 阅读详情

相关推荐

QGroundControl或者华科尔地面站安装完打不开问题解决

QGroundControl 华科尔 打不开

wv112406的博客 4891

c语言常用的条件编译,C语言条件编译

使用与平台有关的C语言函数,可能会使得程序不具有可移植性。比如Socket编程、多线程编程等是与平台有关的。若想将程序做成平台无关的就需要用到与平台相关的条件编译。编译器GCC#ifdef__GNUC__#if __GNUC__ >= 3 // GCC3.0以上Visual C++#ifdef_MSC_VER(非VC编译器很多地方也有定义)#if _MSC_VER >=1000 /...

weixin_31533357的博客 2506

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解

Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。

shizhibuyi1234的博客 7376

_MSC_VER超详细讲解,一看就会

_MSC_VER是微软的预编译控制。_MSC_VER可以分解为:MS:Microsoft的简写。C:MSC就是Microsoft的C编译器。VER:Version的简写。_MSC_VER的意思就是:Microsoft的C编译器的版本。微软不同时期,编译器有不同的版本:MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015)MS VC++ 12.0 _MSC...

小黑鼠编程之路 2万+

【tensorrt】——深入解析TypeError: pybind11::init()报错:CUDA版本冲突与解决方案

本文深入解析了TensorRT中常见的TypeError: pybind11::init()报错问题,重点探讨了CUDA版本冲突的根源与解决方案。通过实际案例展示了PyTorch与TensorRT的版本兼容性问题诊断方法,并提供了conda环境管理、环境变量配置等实用修复技巧,帮助开发者有效解决CUDA初始化失败问题。

ggg99的专栏 271

基于YOLOv10的微小目标检测,多头检测器提升小目标检测精度

引入多头检测器助力YOLOv10,暴力提升小目标检测性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2567

C++编译选项学习

 1、  如何判断是32位的还是64位的/* Find the arch type */ #if defined(__x86_64__) || defined(_M_X64) #  说明是64位的 #else #  说明是32位的 2、  如何判断使用的是什么编译器#if defined( _MSC_VER ) #   说明是微软的vc编译器 #elif defined( __GN

Kisser Loves C++ 1129

VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能

VTK (Visualization Toolkit) 是一个强大的开源可视化库,非常适合处理点云数据。下面将介绍如何使用 VTK 显示大量点云数据,并实现点云拾取、着色、测量等功能。

深之JohnChen的专栏 1994

判断编译器类型、编译器版本、操作系统。

要判断编译器的版本,可以使用预定义的宏或条件编译指令,具体取决于使用的编译器。可以使用预定义的宏来判断编译器类型。宏用于判断是否使用了MSVC 编译器。要判断操作系统,可以使用预定义的宏,如。宏用于判断是否使用了GCC 编译器,

clayhell的博客 1373

基于ResNet + LLM大语言模型的分类识别系统设计与实现,Web前后端分离,Django+vue3+AI助手模块+ResNet50算法+LLM 联动+Element Plus等技术,全网独发

分类识别任务是计算机视觉中的重要任务,广泛应用于智慧校园分类、智慧农业、智慧生活场景分类等领域。常见的分类模型有 VGGNet、ResNet 、MobileNet 、ConvNeXt、DenseNet、ViT、Swin Transformer、YOLOv8/11/26。本项目结合 ResNet分类识别算法 + LLM大语言模型联动 ,使用 Django + Vue3,构建了一个通用的 Web 前后端系统,用户端 + 管理端 ,便于用户操作检,不仅可以用于大论文的工作量展示,还可以作为毕业设计。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 756

数据本体论如何指导数仓建模?

数据本体论指导数仓建模的核心在于构建业务语义与数据结构的桥梁。该方法从业务域中抽象标准化知识体系,包含核心概念、属性、关系和规则五大要素,并将其映射为分层数仓模型。通过"业务本体梳理→本体建模→模型映射→治理迭代"的流程,实现数仓从"结构存储"到"语义载体"的升级。相比传统建模,该方法能解决语义不一致、跨域融合难等问题,使数仓具备更好的可扩展性和业务对齐性。实践表明,以数据本体论为指导的数仓建模能显著提升数据资产的可理解性和复用价值。

石榴姐yyds 393

Unity3d C#学习小结(五)[关于不同平台的条件编译]

最近一直在做一个小游戏,想让它在不同平台自适应,当然代码肯定要一次性写完啦,为了适应各种平台,大家肯定会使用条件编译了,下面就说说怎么使用条件编译,条件编译不难,关键是大家不知道它的名字。 void Awake () { #if UNITY_ANDROID the code of android #endif #if UNITY_IPHONE the code of

Coding My Life 4585

FPGA打砖块游戏设计(有上板照片)VHDL

这是一款经典打砖块游戏,我们的努力让它更精致更好玩,我们将它取名为打砖块游戏(Flyball),以下是该系统的一些基本功能: 画面简约而经典,色彩绚丽而活泼,动画流畅 玩家顺序挑战3个不同难度的级别,趣味十足 计分功能,卡通字母数字 4条生命值,由生命条显示 游戏结束画面,缓缓浮起与缤纷刷色的特效 四键操作,可复位,可暂停,高灵敏 96块砖拼出可爱的“囧”字,方便更改 碰挡板非镜面反射 初始启动,随机的发射速度。

QQ_778132974的博客 1660

不同OS和不同编译器的条件编译小结

编码的时候经常要用到条件编译,每次都到网上去查比较浪费时间,今天总结一下以备后用编译器 - GCC - #ifdef __GNUC__ - #if __GNUC__ >= 3 // GCC3.0以上 - Visual C++ - #ifdef _MSC_VER(非VC编译器很多地方也有定义) - #if _MSC_VER >=1000 //

sundaygeek的专栏 850

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

预处理-03-文件包含、条件编译、小结

1.文件包含 尽管我们很熟悉,但对文件包含命令还要说明以下几点:1. 一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。2. 文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。 3. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。例如以下写法都是允许的:#include"stdio.h"#include<math.h...

weixin_30664539的博客 201

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

实验九:预处理命令

在工程ex9中,创建头文件print_format.h和C语言源程序ex9_1.c。③一行输出三个实数。写出程序ex9_1.c的运行结果。3、利用条件编译,若有预定义LETTER为1,则将字符串中的小写字母改为大写字母;否则将字符串中的大写字母改为小写字母。源程序以ex9_4.c保存。掌握了宏定义的方法,掌握文件包含处理的方法,掌握条件编译的方法。源程序以ex9_2.c保存。2. 掌握宏定义的方法,掌握文件包含处理的方法,掌握条件编译的方法。2、用无参的宏求解圆球的体积。源程序以ex9_3.c保存。

weixin_63113396的博客 472

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

条件编译

 预处理程序提供了条件编译的功能。 可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍:1. 第一种形式:#ifdef 标识符 程序段1 #else 程序段2 #endif 它的功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。

caojunling的专栏 1477

条件编译使用分析

1 基本概念 条件编译的行为类似于C语言中的if…else… 条件编译是预编译指示命令,用于控制是否编译某段代码。 实例分析:条件编译初探// #include <stdio.h>#define C 1int main() { const char* s; #if( C == 1 ) s = "This is first printf...\n"; #else

一万HOURS的知识库 680

C语言学习——预处理命令(条件编译)

声明:本文章为个人学习笔记,资料整理参考谭浩强《C程序设计(第三版)》如有错误,欢迎大家指正。

weixin_63292027的博客 1453

条件编译(详解)

title: 条件编译 date: 2021-11-19 16:35:33 tags: C 语言 前言 下午在学习单片机的时候,老师讲到头文件编写,用到了一个算是比较新鲜的语句。之前我学习的时候一直没有在意这个语句,今天算是小结一下。 在此之前,我想首先得明确在基础的C语言编写中何为头文件、源文件? 头文件 头文件就是用来写类的声明(包括类的成员的声明和方法的声明)、函数原型、#define常数等,但是一般很少写出具体的细节。头文件的编写一般需要按照下述代码格式来写: #ifndef __LED_H #.

weixin_42660711的博客 2473

Verilog语法之条件编译`ifdef, `ifndef,`else, `elsif, `endif

但有时候出于对程序代码优化的考虑,希望只对其中一部分内容进行编译,此时就需要在程序中加上条件,让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就是。到FPGA的开发,其条件编译可以通俗的理解为,根据条件选择性地将指定部分综合为电路,而未被指定部分则不综合成电路,这可以有效地减少电路面积和提高代码的复用性和灵活性。这可以通过条件编译来解决,在条件编译中,设计器可以将代码包装在编译器指令中,编译器指令告诉编译器在设置给定的命名标志时包含或排除要编译的代码。...程序段1......程序段2...

whm128的博客 2373

条件编译分析及使用

1 基本概念 条件编译的行为类似于C语言中的if…else… 条件编译是预编译指示命令,用于控制是否编译某段代码。 代码分析 // #include <stdio.h> #define C 1 int main() { const char* s; #if( C == 1 ) s = "This is first printf...\n"; #else s = "This is second printf...\n"; #e

weixin_48321071的博客 664
上一篇: XP工程移植Vista上找不到msxml.dll错误
下一篇: 仅通过崩溃地址找出源代码的出错行(转载)
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值