【发布时间】:2017-02-26 02:44:29
【问题描述】:
我有这种形式的功能:
void authenticate()
{
int auth_flag;
char password[16];
...
}
当我调试程序时,我可以看到 auth_flag 变量在堆栈中的 password 变量之后(这看起来很正常)。
现在当我改变变量声明的顺序时:
void authenticate()
{
char password[16];
int auth_flag;
...
}
我看到变量 auth_flag 仍然分配在堆栈中的 password 变量之后。
我正在寻找的是避免/控制这种情况的任何方法,无论是使用编译选项还是代码内编译器指令。
【问题讨论】:
-
为什么要阻止它?如果有必要,您可能需要声明一个匿名结构。
-
我想避免 gcc 对结构的特殊处理。我正在寻找的更像是一个 gcc 选项来实现结果。
-
@KenY-N 那篇文章解释了原因,但我仍然想知道是否有控制 gcc 功能的选项。
-
@Lưu Vĩnh Phúc :询问的是变量的顺序,而不是函数。您提供的链接没有为此提出任何解决方案。