首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于嵌入式C语言的有关问题

2012-05-09 
关于嵌入式C语言的问题#ifdef __cplusplusextern C {#endif我是在IAR的环境中编写STM32单片机程序的,移

关于嵌入式C语言的问题
#ifdef __cplusplus
extern "C" {
#endif

我是在IAR的环境中编写STM32单片机程序的,移植一个开源TCP/IP协议时看到这个的.
其实经常能看到这个代码,想问下这个是什么意思?有什么用..

还有就是一个宏,目的好像是内存对齐什么的(不懂)
#ifndef LWIP_MEM_ALIGN_SIZE
#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1))
#endif

MEM_ALIGNMENT定义在下面.
/* ---------- Memory options ---------- */
/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
  lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
  byte alignment -> define MEM_ALIGNMENT to 2. */
#define MEM_ALIGNMENT 4

这个宏的用法是对一个内存地址使用后赋给另一个内存地址,
这个操作好像已经懂了,就是往后移动内存地址,使内存地址的后两位为0, 就是但是为什么要这样做??
记得好像时内存对齐什么的,求高手能讲的详细点吗??谢谢..

[解决办法]
#ifdef __cplusplus
extern "C" {
#endif

翻译:如果定义了 C++ 就把“C”括号后面的函数用C编译器编译。否则就用C++编译器编译。

详情参考各种百科:
http://baike.baidu.com/view/2816461.htm

后面的的确是为了内存对齐。
至于内存对齐是什么,可以参考:
http://baike.baidu.com/view/4786260.htm

热点排行