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
有高人能指导一下这种函数名(变量) 宏定义是什么格式吗?没看明白望指导。 展开
{
...
}
以上的函数写完函数名和变量后多了一个__banked。
__banked定义如下:
#ifndef HAVE_SDCC_BANKING
#define __banked
有高人能指导一下这种函数名(变量) 宏定义是什么格式吗?没看明白望指导。 展开
4个回答
2019-01-30
展开全部
用于指定编译器优化存储的宏
展开全部
预处理运算符# #为宏扩展提供了一种连接实际变元的手段。如果替换文本中的参数用 # #相
连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描。例
如,下面定义的宏p a s t e用于连接两个变元:
#define paste( front, back ) front ## back
从而宏调用paste(name, 1)的结果是建立单词n a m e 1。
连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描。例
如,下面定义的宏p a s t e用于连接两个变元:
#define paste( front, back ) front ## back
从而宏调用paste(name, 1)的结果是建立单词n a m e 1。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
宏定义要看你怎么用了。 例如#define NEWLINE printf("\n") 你在用的时候就要把NEWLINE当作是一条语句或函数后面要加分号才可以。 若#define NEWLINE printf("\n"); 那你在使用这个宏的时候只要写NEWLINE就可以了。 PS.如果你宏定义中有分号,使用的时候加不加分号都行,因为多的那个分号可以认为是空语句。但是宏定义没有加分号,使用宏的时候就要记着加分号。所以你测试时只把宏定义的分号去掉了,肯定会报某个语句之前parse错误
追问
感谢您的回答。可是我的问题是,函数定义后面加了一个宏变量,这种格式您有见过吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为有许多这种定义是在.h文件中写的,会被多个源文件引用,当需要某些定义在整个编译过程中只被定义一次时,就用到这种方式:
#ifndef xxxxx //如果没定义过...那么才执行下面内容
#define xxxxx //定义这个标识,使再遇到上行判断时被跳过不执行
...
#endif //定义结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询