我有以下代码:
#include <stdio.h>
int
main(void)
{
float a[4] __attribute__((aligned(0x1000))) = {1.0, 2.0, 3.0, 4.0};
printf("%p %p %p %p\n", &a[0], &a[1], &a[2], &a[3]);
}
Run Code Online (Sandbox Code Playgroud)
我有以下输出:
0x7fffbfcd2da0 0x7fffbfcd2da4 0x7fffbfcd2da8 0x7fffbfcd2dac
Run Code Online (Sandbox Code Playgroud)
为什么地址a[0]不是多个0x1000?
到底__attribute__((aligned(x)))是什么?我误解了这个解释?
我正在使用gcc 4.1.2.
在SMP机器上,我们必须使用 spin_lock_irqsave而不是spin_lock_irq中断上下文.
为什么我们要保存标志(包含IF)?
还有其他中断程序可能会打断我们吗?
我有一个数组(C语言),应在编译时初始化。
例如:
DECLARE_CMD(f1, arg);
DECLARE_CMD(f2, arg);
Run Code Online (Sandbox Code Playgroud)
从多个文件中调用DECLARE_CMD。
我希望对此进行预处理。
my_func_type my_funcs [] = {
&f1,
&f2
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过宏将项目附加到静态数组?
我在gcc4上使用C99(具有GNU扩展名)。