SDCC(Z80架构)中__attribute__((section))的等价语法是什么?
Z80架构SDCC环境下对应GCC自定义段代码的等价实现
原问题代码(GCC)
文件:gcc.c
int a __attribute__((section(".custom_section"))) = 0; int inc_a(void) { return ++a; }
SDCC等价实现
方式1:使用属性语法(适配SDCC新版本)
SDCC较新版本支持与GCC类似的__attribute__((section))语法,直接复用类似写法即可:
int a __attribute__((section(".custom_section"))) = 0; int inc_a(void) { return ++a; }
方式2:使用#pragma section指令(兼容旧版SDCC)
如果使用的SDCC版本不支持属性语法,可通过#pragma指令指定变量所属段:
// 切换数据段到.custom_section #pragma section data=".custom_section" int a = 0; // 恢复默认数据段 #pragma section data int inc_a(void) { return ++a; }
两种实现都能将全局变量a放置到.custom_section自定义段中,函数inc_a的逻辑与原代码完全一致。
内容的提问来源于stack exchange,提问作者Gusteivos gp
相关产品推荐
相关产品推荐

