C开发之----#if、#ifdef、#if defined之间的区别

#if的使用说明

#if的后面接的是表达式

#if (MAX==10)||(MAX==20) code... #endif

它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!)

#if defined的使用

#if后面接的是一个宏。

#if defined (x) ...code... #endif

这个#if defined它不管里面的“x”的逻辑是“真”还是“假”它只管这个程序的前面的宏定义里面有没有定义“x”这个宏,如果定义了x这个宏,那么,编译器会编译中间的…code…否则不直接忽视中间的…code…代码。

另外 #if defined(x)也可以取反,也就用 #if !defined(x)

#ifdef的使用

#ifdef的使用和#if defined()的用法一致
#ifndef又和#if !defined()的用法一致。

最后强调两点:
第一:这几个宏定义只是决定代码块是否被编译!
第二:别忘了#endif

时间: 2024-09-26 15:47:25

C开发之----#if、#ifdef、#if defined之间的区别的相关文章

#if、#ifdef、#if defined之间的区别【转】

转自:http://quanminchaoren.iteye.com/blog/1870977 #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!) #if defined的使用 #if后面接的是一个宏. #if defined (x) ...code... #end

android layout-android开发中布局怎么把元素之间的空间取消

问题描述 android开发中布局怎么把元素之间的空间取消 我想做一个ios的计算器,但是ios计算器之间的button挨在一起用线分开 除了linearlayout之外有没有办法可以做成那个样子呢.我用linearlayout做了一个.但是别的布局不会.

开发人员、程序员与计算机科学家三者之间的区别

导读:原文作者Alan Skorkin写了一篇<The Difference Between A Developer, A Programmer And A Computer Scientist>,文中讲述如何区分程序员.开发人员和计算机科学家之间的区别,发表了个人见解.现将译文<开发人员.程序员与计算机科学家三者之间的区别>转载,以下是文章内容: 我经常使用这三个几乎可以互换的词,是的,甚至包括计算机科学家.毕竟,我们中的大多数人都拥有计算机科学学位,那这三者有什么不同呢?然而,

深层次探讨mutex与semaphore之间的区别

深层次探讨mutex与semaphore之间的区别 作者 digoal 日期 2016-11-10 标签 mutex , semaphore , Linux , 锁 , 内核 背景 本文依旧和<PostgreSQL 同步流复制锁瓶颈分析>这篇文章有关. 本文主要介绍一下Linux下面信号量(semaphore)和互斥锁(mutex)的区别. 原文地址 http://www.aichengxu.com/view/2456963 原文 看过Linux内核的同学都知道,Linux内核中除了有sema

开源领域常用的许可协议和它们之间的区别

越来越多的开发者与设计者希望将自己的产品开源,以便其他人可以在他们的代码基础上做更多事,开源社区也因此充满生机.在我们所能想到的应用领域,都有开源软件存在(象 WordPress,Drupal 这些开源CMS).然而很多人对开源许可并不了解,本文介绍开源领域常用的几种许可协议以及它们之间的区别. 什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供一定的权限. 不管产品是免费向公众分发,还是出

浅析jQuery(function(){})与(function(){})(jQuery)之间的区别

 本篇文章主要是对jQuery(function(){})与(function(){})(jQuery)之间的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Jquery是优秀的Javascrīpt框架.我们现在来讨论下在 Jquery 中两个页面载入后执行的函数.   $(document).ready(function(){   // 在这里写你的代码... });在DOM加载完成时运行的代码   可以简写成   jQuery(function(){  });    (func

一文读懂机器学习、数据科学、人工智能、深度学习和统计学之间的区别

在这篇文章中,数据科学家与分析师 Vincent Granville 明晰了数据科学家所具有的不同角色,以及数据科学与机器学习.深度学习.人工智能.统计学.物联网.运筹学和应用数学等相关领域的比较和重叠.Granville 介绍说,由于数据科学是一个范围很广的学科,所以他首先介绍了在业务环境中可能会遇到的数据科学家的类型,你甚至可能会发现你自己原来也是某种数据科学家.和其它任何科学学科一样,数据科学也可能会从其它相关学科借用技术.当然,我们也已经开发出了自己的技术库,尤其是让我们可以以自动化的方

不同VC之间的区别在哪VC能带来多少附加值?

VC投资到一家公司之后,毫无疑问,他首先带来了现金,这正是很多创业企业最急迫需要的.对于不同的VC,他们的钱都是一样的,同等数额的现金,这家VC的不可能比别家VC的值钱.那对于创业者来说,不同VC之间的区别在哪里呢?这就是VC这个词背后另外一个解释了:Value Combined,即附加价值对VC来讲,最梦寐以求的情形是这样的:自己找一个公司,把钱投进去,不闻不问几年之后,拿回来几十倍的利润回报.这种好事也时有发生,有不少影视明星.体育明星通过朋友或理财顾问,把钱投给一些早期项目,也稀里糊涂地挣

《面向对象的思考过程(原书第4版)》一2.1 清楚接口和实现之间的区别

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第2章,第2.1节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 2.1 清楚接口和实现之间的区别 正如第1章所示,构建健壮的面向对象设计的关键之一是理解接口和实现之间的不同.因此,当设计类时,应该向用户暴露什么.隐藏什么是非常重要的.而封装与生俱来的数据隐藏机制可以对用户隐藏不必要的数据.小心不要混淆接口与图形化用户接口(graphica