平台化代码包含头文件说明

这篇博客详细介绍了在平台化C语言代码中,如何正确处理头文件包含以确保#pragma代码段正确执行。文章强调了在头文件中使用#pragma指令时,不应使用防止重复包含的宏,因为这会导致后续包含该头文件时#pragma指令被跳过,进而引起链接错误。同时,文章提供了一个示例头文件,展示了如何定义和管理各种代码、常量和变量段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台化代码中关于头文件包含使用说明:

1,平台化代码需要考虑将”#pragma code section“部分放在头文件中包含及修改该#pragma部分代码,其中该头文件需要重复被包含,故此头文件前不能添加类似如下

#ifndef _MEMMAP_H_

#define _MEMMAP_H_

...

#endif

头文件防止重复包含的预计了,否则会出现第一次使用该文件后,在后边其他文件包含该头文件时,由于已经包含了该头文件,故该文件下方的#pragma不会被执行到,导致在链接文件时提示找不到指定的section而报出错误;

以下文件仅做参考:

/**********************************************************************************************************************
 *  COMM START 
 *********************************************************************************************************************/


/*******  CODE sections **********************************************************************************************/


#ifdef COMM_START_SEC_CODE
  #undef COMM_START_SEC_CODE
  #define START_SEC_CODE                            /* mapped to default code section */
#endif
#ifdef COMM_STOP_SEC_CODE
  #undef COMM_STOP_SEC_CODE
  #define STOP_SEC_CODE                             /* default code stop section */
#endif


#ifdef COMM_START_SEC_APPL_CODE
  #undef COMM_START_SEC_APPL_CODE
  #define START_SEC_CODE                            /* mapped to default code section */
#endif
#ifdef COMM_STOP_SEC_APPL_CODE
  #undef COMM_STOP_SEC_APPL_CODE
  #define STOP_SEC_CODE                             /* default code stop section */
#endif


/*******  CONST sections  ********************************************************************************************/


/* CONST sections */


#ifdef COMM_START_SEC_CONST_8BIT
# undef COMM_START_SEC_CONST_8BIT
# define START_SEC_CONST_8BIT                       /* mapped to default const 8bit section */
#endif
#ifdef COMM_STOP_SEC_CONST_8BIT
# undef COMM_STOP_SEC_CONST_8BIT
# define STOP_SEC_CONST                             /* default const stop section */
#endif


#ifdef COMM_START_SEC_CONST_16BIT
# undef COMM_START_SEC_CONST_16BIT
# define START_SEC_CONST_16BIT
#endif
#ifdef COMM_STOP_SEC_CONST_16BIT
# undef COMM_STOP_SEC_CONST_16BIT
# define STOP_SEC_CONST
#endif


#ifdef COMM_START_SEC_CONST_32BIT
# undef COMM_START_SEC_CONST_32BIT
# define START_SEC_CONST_32BIT
#endif
#ifdef COMM_STOP_SEC_CONST_32BIT
# undef COMM_STOP_SEC_CONST_32BIT
# define STOP_SEC_CONST
#endif


#ifdef COMM_START_SEC_CONST_UNSPECIFIED
# undef COMM_START_SEC_CONST_UNSPECIFIED
# define START_SEC_CONST_UNSPECIFIED
#endif
#ifdef COMM_STOP_SEC_CONST_UNSPECIFIED
# undef COMM_STOP_SEC_CONST_UNSPECIFIED
# define STOP_SEC_CONST
#endif




/*******  VAR sections  **********************************************************************************************/


/* VAR NOINIT sections */


#ifdef COMM_START_SEC_VAR_NOINIT_8BIT
# undef COMM_START_SEC_VAR_NOINIT_8BIT
# define START_SEC_VAR_NOINIT_8BIT
#endif
#ifdef COMM_STOP_SEC_VAR_NOINIT_8BIT
# undef COMM_STOP_SEC_VAR_NOINIT_8BIT
# define STOP_SEC_VAR
#endif


#ifdef COMM_START_SEC_VAR_NOINIT_16BIT
# undef COMM_START_SEC_VAR_NOINIT_16BIT
# define START_SEC_VAR_NOINIT_16BIT
#endif
#ifdef COMM_STOP_SEC_VAR_NOINIT_16BIT
# undef COMM_STOP_SEC_VAR_NOINIT_16BIT
# define STOP_SEC_VAR
#endif


#ifdef COMM_START_SEC_VAR_NOINIT_32BIT
# undef COMM_START_SEC_VAR_NOINIT_32BIT
# define START_SEC_VAR_NOINIT_32BIT
#endif
#ifdef COMM_STOP_SEC_VAR_NOINIT_32BIT
# undef COMM_STOP_SEC_VAR_NOINIT_32BIT
# define STOP_SEC_VAR
#endif


#ifdef COMM_START_SEC_VAR_NOINIT_UNSPECIFIED
# undef COMM_START_SEC_VAR_NOINIT_UNSPECIFIED
# define START

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值