精华内容
下载资源
问答
  • c语言用宏定义常量As we know that, while declaring an array we need to pass maximum number of elements, for example, if you want to declare an array for 10 elements. You need to pass 10 while declaring...

    c语言用宏定义常量

    As we know that, while declaring an array we need to pass maximum number of elements, for example, if you want to declare an array for 10 elements. You need to pass 10 while declaring. Example: int arr[10];

    众所周知,在声明数组时,例如,如果要声明一个包含10个元素的数组,则需要传递最大数量的元素。 您需要在声明时通过10 。 示例: int arr [10];

    But, there is a good way, to define a constant by using Macro for it, so that we can easily edit, when required.

    但是,有一种很好的方法,可以使用宏为其定义常量,以便我们可以在需要时轻松进行编辑。

    Macro definition:

    宏定义:

        #define MAX 10 
    
    

    Example:

    例:

    #include <stdio.h>
    
    #define MAX 10
    
    int main()
    {
    	int arr1[MAX];
    	int arr2[MAX];
    	
    	printf("Maximum elements of the array: %d\n",MAX);
    	printf("Size of arr1: %d\n",sizeof(arr1));
    	printf("Size of arr2: %d\n",sizeof(arr2));
    	printf("Total elements  of arr1: %d\n",sizeof(arr1)/sizeof(int));
    	printf("Total elements  of arr2: %d\n",sizeof(arr2)/sizeof(int));
    		
    	return 0;
    }
    
    

    Output

    输出量

        Maximum elements of the array: 10
        Size of arr1: 40
        Size of arr2: 40
        Total elements  of arr1: 10
        Total elements  of arr2: 10
    
    

    翻译自: https://www.includehelp.com/c-programs/define-a-constant-using-macro-to-use-in-array-declarations-in-c.aspx

    c语言用宏定义常量

    展开全文
  • C语言入门:用宏定义常量

    千次阅读 2021-04-22 10:35:15
    C语言:用宏定义常量 已知某物品单价为30,数量为x。求商品的总价钱。宏定义物品的单价。 #include<stdio.h> int main(void) #define A 30 { int x,c; scanf("%d",&x); c=30*x; printf("%d",c...

    C语言:用宏定义常量


    已知某物品单价为30,数量为x。求商品的总价钱。用宏定义物品的单价。

    #include<stdio.h>
    int main(void)
    #define A 30
    	{  
            int x,c;
            scanf("%d",&x);
            c=30*x;
            printf("%d",c);
            return 0;
    	}
    

     

    展开全文
  • define宏定义和const常量定义之间的区别。
  • ES.31:不要用宏定义常量或函数 Reason(原因) Macros are a major source of bugs. Macros don't obey the usual scope and type rules. Macros don't obey the usual rules for argument passing. Macros ...

    ES.31: Don't use macros for constants or "functions"

    ES.31:不要用宏定义常量或函数

     

    Reason(原因)

    Macros are a major source of bugs. Macros don't obey the usual scope and type rules. Macros don't obey the usual rules for argument passing. Macros ensure that the human reader sees something different from what the compiler sees. Macros complicate tool building.

    宏是错误的主要来源之一。宏不会遵守通常的范围和类型准则。宏也不会遵守参数传递准则。宏为人提供一个和编译器视角有些不同的视角。宏让工具构建变得更复杂。

     

    Example, bad(反面示例)

    •  
    •  
    #define PI 3.14#define SQUARE(a, b) (a * b)

    Even if we hadn't left a well-known bug in SQUARE there are much better behaved alternatives; for example:

    虽然SQUARE定义中不存在已知的错误,但确实存在可以动作更好的其他选项。

     
    constexpr double pi = 3.14;
    template<typename T> T square(T a, T b) { return a * b; }
    

     

    Enforcement(实施建议)

    Scream when you see a macro that isn't just used for source control (e.g., #ifdef)

    当给你看到宏定义不是用于代码控制(例如#ifdef)时,一定要尖叫。

     

    原文链接

    https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es31-dont-use-macros-for-constants-or-functions

     


     

    觉得本文有帮助?欢迎点赞并分享给更多的人。

    阅读更多更新文章,请关注微信公众号【面向对象思考】

    展开全文
  • C++ 宏定义常量

    万次阅读 2016-01-29 13:10:14
    前言:突然想起很久之前上课时被问及C++ 宏定义常量的区别,仔细了想了想,并没有答起(尴尬),这次就简单总结一下C++宏常量常量的区别吧。 1. 宏定义 宏定义是C语言提供的三种预处理中的一种,又称为宏代换...

    前言:突然想起很久之前上课时被问及C++ 宏定义与常量的区别,仔细了想了想,并没有答起(尴尬),这次就简单总结一下C++宏常量与常量的区别吧。

    1. 宏定义

    宏定义是C语言提供的三种预处理中的一种,又称为宏代换、宏替换,简称“宏”,用#define定义,如下:

    #define Pi 3.1415926

    宏常量没有类型,它是在编译前即预编译阶段进行字符替换,就好比如下的例子:

    S = PI * r * r

    在预编译阶段,直接将PI替换成3.1415926,同时没有类型安全检查,系统也不会为它分配内存。

    宏定义使用#undef符号终止宏定义的作用域。

    2. 常量

    常量则是一种标识符,它的值在运行期间恒定不变。常量使用关键字const定义,如下:

    const float PI = 3.14159;

    常量是在运行时进行替换,并且在编译时会进行严格的类型检验,同时系统也会为常量分配内存。

    3. 区别

    如上所述,C++语言可以用const 来定义常量,也可以用#define来定义宏常量。但是两者的区别在于:

    • const 常量有数据类型,而宏常量没有数据类型;
    • const 常量在运行时进行替换,宏常量则是在预编译截断进行替换,const 常量在编译阶段会进行类型安全检查,宏常量则不会;
    • 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。

    4. 附录

    在实际使用中,由于宏常量在预编译时只是进行简单的字符替换,而不会进行编译检查,所有应该特别注意宏常量的使用,譬如如下代码:

    #define N 3 + 2
    
    float a = 2 * N

    预想的值应该是a=10,但实际结果却是a=8,这是因为宏常量N在预编译阶段直接将字符替换,变成了如下代码:

    float a = 2 * 3 + 2

    这也叫宏定义的“边缘效应”。

    另外根据规则5-2-1:在C++ 程序中只使用const 常量而不使用宏常量,即const 常量完全取代宏常量。

    展开全文
  •  不过,在c++中,effective c++中曾指出过,尽量const 定义常量,来替换宏定义。  const double PI = 3.1415;  好处: const 替换 宏定义后,编译时能进行类型检查,一旦出错后,比宏定义更方便调试。 2. ...
  • 带参数的宏定义#define HGRGB(R, G, B) [UIColor colorWithRed:(R)/255.0 green:(G)/255.0 blue:(B)/255.0 alpha:1.0]无参数定义// 无参数的宏定义#define HGServer @"服务器地址"常量定义常量定义也分为两种:...
  • define宏定义常量 宏定义常量是不可以被改变的量 define宏定义表达式 define宏定义函数
  • 字符串常量宏定义

    2021-04-20 11:43:46
    文章目录字符串常量常量和字符常量的区别:宏定义注意以下几点宏定义表示数据类型和typedef定义数据说明符的区别:带参宏定义注意 字符串常量 字符串常量是由一对双引号括起来的字符序列 例如:“CHINA”,"$12.5...
  • 定义常量方式介绍两种: 注意:传值必须使用指针来传,意味着要通过传地址才能实现传值,注意和赋值的区别。 一、使用结构体 1、在头文件.h里定义结构体如: typedef struct { unsigned long num; int score; }...
  • 宏定义与符号常量

    千次阅读 2018-10-16 15:09:15
    在C中,“宏”分为无参数的宏和有参数的宏两种 无参宏定义 (1)无参宏定义的一般格式:#...(2)使用宏定义的优点 可提高源程序的可维护性;可提高源程序的可移植性;减少源程序中重复书写字符串的工作量。 例如:...
  • 常量

    2021-05-21 02:37:06
    简单来说:宏定义又称为宏代换、宏替换,简称“宏”。是C提供的三种预处理功能的其中一种。复杂的请看下面,讲的很全。下面的带参宏定义,多行宏定义,在Linux内核源码中很多。另外sizeof也是一个宏定义宏定义宏...
  • 因为宏定义是一条编译预处理指令(效率更高),所以它不是一条c语句,最后不用加分号。意在替换。 const常量:编译器将const常量放在只读存储区(只读存储区不允许进行写操作) 为什么要将const常量放在只读存储区中...
  • 宏定义常量与const定义常量的区别

    千次阅读 2013-11-07 20:55:41
    这两种方式在语法上都是合法的,但是第二种方式要比第一种方式好,因为如果使用#define定义宏,PI会在代码的预编译阶段被预编译处理器替换成3.14159,的名称不会出现在符号表中,这样会给代码后期的调试带来麻烦,...
  • C语言 常量宏定义

    千次阅读 2020-06-26 22:59:27
    C语言:常量宏定义什么是常量常量的类型定义符号常量宏定义)标识符是什么字符串常量代码 什么是常量 在程序运行时,值不能被改变的量,称之为常量常量的类型 整型常量:520,1314,123 实型常量:3.14,...
  • 1.类型和安全检查不同 宏定义是字符替换,没有...宏定义是一个“编译时”概念,在预处理阶段展开,不能对宏定义进行调试,生命周期结束与编译时期; const常量是一个“运行时”概念,在程序运行使用,类似于一个只...
  • 2、iOS中关于宏定义常量使用 一、const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。 编译时刻:宏是预编译(编译之前处理),...
  • 今天我的读者跟我说:在测试对矩阵进行 SVD 分解时,需要定义矩阵的行和列的大小,我习惯性的用宏定义来定义了这两个变量,在运行的时候,就开始思考宏定义常量之间有些什么样的分别。 参考了一些别人的说法,自己...
  • 原标题:C语言宏定义使用,都会了吗?1 概述在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性。当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。...
  • 在iOS开发中,经常用到宏定义,或const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱宏与const修饰你能区分下面的吗?知道什么时候吗?#define HSCoder @"汉斯哈哈哈"NSString *HSCoder = @...
  • 宏定义常量定义的区别

    千次阅读 2014-04-06 18:54:01
    C++ 语言可以const 来定义常量,也可以#define 来定义常量。但是前者比后者有更多的优点: (1) const 常量有数据类型,而常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,...
  • 说明:(个人总结,有不对之处,还望指正) ...常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 常用的一些常量表示,如: 名称 值 含义 PI 3.14159 265 表示 πππ 的值为常量...
  •  const常量是编译运行阶段使用。 (2) 类型和安全检查不同  define没有类型,不做任何类型检查,仅仅是展开。  const常量有具体的类型,在编译阶段会执行类型检查。 (3) 存储方式不同  d...
  •  const常量是编译运行阶段使用。 (2) 类型和安全检查不同  define没有类型,不做任何类型检查,仅仅是展开。  const常量有具体的类型,在编译阶段会执行类型检查。 (3) 存储方式不同  define仅仅是展开...
  • 最近在工程里看到很多不规范的使用,于是来写一篇博客来让不是很清楚的小朋友们,使用正确的规范开发ios,少埋点坑。
  • (1) 编译器处理方式...(宏定义不分配内存,变量定义分配内存。)  const常量会在内存中分配(可以是堆中也可以是栈中)。  (4)const 可以节省空间,避免不必要的内存分配。 例如: #define PI 3.14159 //常量
  • C语言中const定义常量和宏常量的区别1.const定义常量2.常量3.两者区别(1) 编译器处理方式不同(2) 类型和安全检查不同(3) 存储方式不同 1.const定义常量 关键字const 定义的是变量不是常量, 而是去改变一个变量的...
  • 变量和常量是程序处理的两种基本数据对象 变量 变量的意义就是确定目标并提供存放的空间。 变量的命名规则 1.变量名只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线 _ 组成。 2.第一个字母必须是字母或者下划线...
  • 宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误; const常量常量的声明,有类型区别,需要在编译阶段进行类型检查 其中,边际效应是指如下错误

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,175
精华内容 36,070
关键字:

用宏定义常量