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

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

[复制链接]
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

查看全部评分

ts2000 回答时间: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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版