你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请教,宏定义中的##,有什么用途?

[复制链接]
any012 提问时间:2016-12-28 17:07 /
悬赏3ST金币已解决
本帖最后由 any012 于 2016-12-30 11:23 编辑

用cube生成了个freertos的工程,默认任务是通过这个函数创建的:
MX_FREERTOS_Init();
这个函数里,有两句:
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
  defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
第一句中的osThreadDef是个宏定义:
#define osThreadDef(name, thread, priority, instances, stacksz)  \
const osThreadDef_t os_thread_def_##name = \
{ #name, (thread), (priority), (instances), (stacksz)  }
其中的 ##name,这是什么用法?

os ThreadDef_t是个结构体:
typedef struct os_thread_def  {
  char                   *name;        ///< Thread name
  os_pthread             pthread;      ///< start address of thread function
  osPriority             tpriority;    ///< initial thread priority
  uint32_t               instances;    ///< maximum number of instances of that thread function
  uint32_t               stacksize;    ///< stack size requirements in bytes; 0 is default stack size
} osThreadDef_t;

------------------------------------------------------------
以下图片是QQ群里一位朋友分享的。
井号用法.png

最佳答案

查看完整内容

先给你看个C语言知识#define CONN(X,Y) X##Y ##表示连接,例long n=CONN(123,456),n=123456。怎么样我的回答满意不
收藏 1 评论9 发布时间:2016-12-28 17:07

举报

9个回答
海迹天涯 回答时间:2016-12-28 17:07:53
先给你看个C语言知识#define  CONN(X,Y)  X##Y
##表示连接,例long n=CONN(123,456),n=123456。怎么样我的回答满意不

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

海迹天涯 回答时间:2016-12-28 17:57:18
签到签到签到签到
jtc_88 回答时间:2016-12-29 08:44:57
##用来连接前后两个参数,把它们变成一个字符串。

举例说:
#define Com(x,y) x##y
int n = Com(123,456); 结果就是n=123456;
char* str = Com("asdf", "adf")结果就是 str = "asdfadf";
你给出的宏
#是预编译的象征有了这个编译器就知道他是在预编译前需要做的事
如包含文件
#include< >
#define N 100//在编译前将N全部替换为100

点评

你的回答很全面。感谢。 楼上的朋友回答的早一点,就把悬赏分给楼上的朋友吧。  发表于 2016-12-29 08:59

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

小小超 回答时间:2016-12-29 09:02:01
进来学习一下!!
斜阳 回答时间:2016-12-29 09:22:49
学习学习
左岸右岸 回答时间:2016-12-29 09:35:29
字符串连接吧
5265325 回答时间:2016-12-29 09:42:16
andypanfan 回答时间:2016-12-30 09:29:25

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版