反转具有不同大小的不同成员的结构的所有位的有效方法是什么?
示例结构:
typedef struct {
uint16_t mem1;
uint8_t mem2;
uint32_t mem3;
uint8_t mem4[4];
} sample_struct;
Run Code Online (Sandbox Code Playgroud) 考虑这个功能:
int get_result(int *result) {
int err = 0;
int number = 0;
if (result == NULL) {
printf("error: null input\n");
return -1;
}
err = get_number(&number);
if (err != 0) {
printf("error calling get_number: err = %d\n", err);
return err;
}
err = calculate_result(number, result);
if (err != 0) {
printf("error calling get_result: err = %d\n", err);
return err;
}
return err;
}
Run Code Online (Sandbox Code Playgroud)
这个函数的实际工作只需要3行(声明数字变量,调用get_number(),然后调用calculate_result()).但是,错误检查/处理代码会将此功能扩展为17行(给定或接受,具体取决于您对行的计算方式).
在更大规模,多次调用和多次错误检查时,我们完全膨胀该函数并使其难以理解且难以理解.
有什么方法可以解决C代码膨胀问题并保持函数核心操作的可读性(不牺牲基本的错误处理代码)?
为什么符号表中的局部静态变量的名称中添加了一个数字?
int main(void) {
static stat_var = 20;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
8:0000000000000008 4 OBJECT LOCAL DEFAULT 2 stat_var .1604