C语言:带参数的宏与函数的区别】的更多相关文章

带参数的宏和函数很相似,但有本质上的区别:宏展开仅仅是字符串的替换,不会对表达式进行计算:宏在编译之前就被处理掉了,它没有机会参与编译,也不会占用内存.而函数是一段可以重复使用的代码,会被编译,会给它分配内存,每次调用函数,就是执行这块内存中的代码.[示例①]用函数计算平方值. #include <stdio.h> int SQ(int y){ return ((y)*(y)); } int main(){ int i=1; while(i<=5){ printf("%d^2…
C语言带参数的main函数 #include<stdio.h> int main(int argc,char*argv[]) { int i; ;i<argc;i++) printf("%s\n",argv[i]); getchar(); getchar(); ; } 运行结果…
带参数的宏定义有如下的格式: [#define 指令----带参数的宏] #define 标识符(x1,x2,……,xn) 其中  x1,x2,……xn是标志符(宏的参数) 注意:在宏的名字和括号之间必修没有空格. 如果有空格,预处理会认为是在定义一个简单的宏,其中(x1,x2,……,xn)是替换列表的一部分 当预处理器遇到一个带参数的宏,会将定义存储起来以便以后使用.在后面的程序中,如果任何地方出现了标识符(y1,y2……,yn)格式的宏调用(其中y1,y2, ……yn是一些列标记),预处理器…
原文:编译预处理 -- 带参数的宏定义--[sky原创] 如有转载请注明出处   编译预处理  --  带参数的宏定义 前面为输出文件,后面为输入文件 gcc -E -o test.i test.c gcc -o test  test.i   test.c   test.i       取消宏定义 #undef 宏名   条件编译的三种形式     第三种 #if 常量表达式 源码1..... #else // 此部分可选 源码2... #endif   #----表示ABC(a) 即为 a这个…
[1]BUG简单示例代码 主要代码如下: #include <QCoreApplication> #include <QDebug> #define ADD(a, b, c) ((a) + (b) + (c)) int func(int &n) { n += ; ; } int addFunc(int a, int b, int c) { return (a + b + c); } int main(int argc, char *argv[]) { QCoreApplic…
在C语言的标准库中,printf.scanf.sscanf.sprintf.sscanf这些标准库的输入输出函数,参数都是可变的.在调试程序时,我们可能希望定义一个参数可变的输出函数来记录日志,那么用可变参数的宏是一个不错的选择. 在C99中规定宏也可以像函数一样带可变的参数,如: #define LOG(format, ...) fprintf(stdout, format, __VA_ARGS__) 其中,...表示可变参数列表,__VA_ARGS__在预处理中,会被实际的参数集(实参列表)…
1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status][Web Board] Description 输入两个整数,求他们相除的余数.用带参的宏或模板函数来实现,编程序. Input 两个短整型数a,b 两个长整型数c,d Output a/b的余数 c/d的余数 Sample Input 10 9 100000000 999999 Sample O…
深入浅出可变参数函数的使用技巧本文主要介绍可变参数的函数使用,然后分析它的原理,程序员自己如何对它们实现和封装,最后是可能会出现的问题和避免措施. VA函数(variable argument function),参数个数可变函数,又称可变参数函数.C/C++编程中,系统提供给编程人员的va函数很少.*printf()/*scanf()系列函数,用于输入输出时格式化字符串:exec*()系列函数,用于在程序中执行外部文件(main(int argc,char*argv[]算不算呢,与其说main…
 装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则:   1.不能修改被装饰的函数的源代码: 2.不能修改被装饰的函数的调用方式: 3.装饰器对被装饰的函数是完全透明,就是被装饰的函数,根本不知道装饰器的存在. 实现装饰器知识储备: 1.函数即“变量” 2.高阶函数 3.嵌套函数 高阶函数+嵌套函数=>装饰器的效果 1.函数即变量的意义: 函数跟变量…
需要做一个httpclient上传,然后啪啪啪网上找资料 1.首先以前系统中用到的了commons-httpclient上传,找了资料后一顿乱改,然后测试 PostMethod filePost = new PostMethod(url); filePost.setParameter("system", "vinuxpost"); try { Part part[] = UploadRequestHelper.getPart(request); filePost.s…