C语言函数后跟一个宏定义是什么意思?

voidrimeaddr_copy(rimeaddr_t*dest,constrimeaddr_t*src)__banked{...}以上的函数写完函数名和变量后多了一个... void rimeaddr_copy(rimeaddr_t *dest, const rimeaddr_t *src) __banked
{
...
}

以上的函数写完函数名和变量后多了一个__banked。
__banked定义如下:
#ifndef HAVE_SDCC_BANKING
#define __banked

有高人能指导一下这种函数名(变量) 宏定义是什么格式吗?没看明白望指导。
展开
 我来答
匿名用户
2019-01-30
展开全部

用于指定编译器优化存储的宏

暗送秋浡365
2019-01-28 · TA获得超过4660个赞
知道大有可为答主
回答量:6401
采纳率:78%
帮助的人:314万
展开全部
预处理运算符# #为宏扩展提供了一种连接实际变元的手段。如果替换文本中的参数用 # #相
连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描。例
如,下面定义的宏p a s t e用于连接两个变元:
#define paste( front, back ) front ## back
从而宏调用paste(name, 1)的结果是建立单词n a m e 1。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
You136999
2019-01-29 · TA获得超过307个赞
知道小有建树答主
回答量:537
采纳率:78%
帮助的人:75.3万
展开全部
宏定义要看你怎么用了。 例如#define NEWLINE printf("\n") 你在用的时候就要把NEWLINE当作是一条语句或函数后面要加分号才可以。 若#define NEWLINE printf("\n"); 那你在使用这个宏的时候只要写NEWLINE就可以了。 PS.如果你宏定义中有分号,使用的时候加不加分号都行,因为多的那个分号可以认为是空语句。但是宏定义没有加分号,使用宏的时候就要记着加分号。所以你测试时只把宏定义的分号去掉了,肯定会报某个语句之前parse错误
追问
感谢您的回答。可是我的问题是,函数定义后面加了一个宏变量,这种格式您有见过吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2019-01-30 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3769万
展开全部

因为有许多这种定义是在.h文件中写的,会被多个源文件引用,当需要某些定义在整个编译过程中只被定义一次时,就用到这种方式:

#ifndef xxxxx //如果没定义过...那么才执行下面内容
#define xxxxx //定义这个标识,使再遇到上行判断时被跳过不执行
...
#endif //定义结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式