首页 > 其他分享 >C语言 #ifdef 和 #if defined区别

C语言 #ifdef 和 #if defined区别

时间:2023-07-15 09:44:39浏览次数:42  
标签:AAA 区别 defined ifdef .... C语言 endif

  • 注意两者都有个define的作用,区别在于使用方式上。前者的通常用法是:
\#ifdef  XXX

   ....

\#else

   ....

\#endif
  • 只能在两者中选择是否有定义。对于后者,常用法是:
\#if defined xxx1

   ....

\#elif defined xxx2

   ....

\#elif defined xxx3

   ....

\#endif

可以在多个中选择是否有定义.

#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如

\#if defined (AAA) && defined (BBB)
xxxxxxxxx
\#endif

\#if defined (AAA) || VERSION > 12
xxxxxxxxx
\#endif

而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时
#ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if defined

标签:AAA,区别,defined,ifdef,....,C语言,endif
From: https://www.cnblogs.com/vigiking-blog/p/17555587.html

相关文章

  • 7.null和undefined的区别
    7.null和undefined的区别?首先Undefined和Null都是基本数据类型,这两个基本数据类型分别都只有一个值,就是undefined和null。undefined代表的含义是未定义,null代表的含义是空对象。一般变量声明了但还没有定义的时候会返回undefined,null主要用于赋值给一些可能会返......
  • 配置问题-Error creating bean with name 'user' defined in class path resource [be
    正在学习IoC使用的jdk版本为jdk17依赖为:<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.0.6</version></dependen......
  • c语言中的大端模式和小端模式
    在学习共用体(联合体union)的时候,碰到了非常经典的大小端模式问题,以下是个人的见解:大端模式与小端模式所有运算的操作数,必须在CPU的內部寄存器才能参与运算对于CPU来说,寄存器才是它真正的储存空间,但是CPU的寄存器的个数以及容量是非常有限的,所以在设计CPU时,必须要有一个它的存储......
  • 你需要知道关于C语言指针的一切
    EverythingyouneedtoknowaboutpointersinC你需要知道关于C语言指针的一切指针的定义指针是内存地址。(嗯,简短的段落。)开始假设你声明一个名为foo的变量。foo;这个变量占用一些内存。在当前主流的Intel处理器上,它占用四个字节的内存(因为int是四个字节宽)。现在......
  • C语言宏定义
    C语言中,宏定义是一种在编译阶段进行文本替换的机制,可以提高代码的可读性、可移植性和方便性。下面是一些在成熟软件中常用的宏定义示例:1.防止头文件被重复包含:```c#ifndefHEADER_FILE_NAME#defineHEADER_FILE_NAME//头文件内容#endif```这种宏定义结构可以防止同一个......
  • C语言-06
    文件操作/*1.文件路径:相对路径/绝对路径2.根目录---如:C盘、D盘、E盘3.操作文件:1.单个字符读写2.字符串读写3.格式化读写4.二进制形式读写5.指定位置读写*/#include<stdio.h>intfunc_1();//声明int......
  • c语言的内存泄漏问题
    在今天的动态内存分配的学习中,我遇到了内存泄漏问题,自己开辟的空间,自己找不到了,并且系统也无法使用,通过查找资料得到了比较加深的见解。C语言什么是内存泄漏,怎么避免内存泄漏一、内存溢出内存溢出OOM(outofmemory),......
  • C语言-05
    预处理/*---用#号开头的命令是预处理命令---“预处理”即:预先处理,在编译前对代码进行一个预先处理include<文件.h>//这个是文件包含命令总上所述,#include<stdio.h>即是:执行“预处理文件包含stdio.h”*/# include/*当main......
  • Linux C语言之时间函数精讲
    @TOC当在LinuxC语言编程中需要处理时间相关的操作时,可以使用时间函数。时间函数提供了获取当前时间、进行时间转换和计算时间差等功能,对于日志记录、性能分析以及定时任务等场景非常有用。本文将详细介绍LinuxC语言中常用的时间函数,包括如何使用它们以及示例代码。前言在Lin......
  • defined in class path resource [de/codecentric/boot/admin/server/config/AdminSe
    搭建springbootadmin监控时出现的,经排查是版本过低,换个高版本的,顺利进入网页界面<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.7.10</version......