我有全局变量
int a[10];
struct sigaction act;
int b[10];
每当我打电话
sigemptyset(&act.sa_mask);
数组a
已损坏。我怀疑是不是编译器的问题。我正在使用 CodeSourcery mips-linux-gnu-gcc 版本 4.5.2。我使用编译
mips-linux-gnu-gcc -c -g -muclibc -pedantic -Wno-declaration-after-statement -std=gnu99 -G 0 -mips2 -msoft-float -mno-memcpy -fomit-frame-pointer -pipe -Wall -Wstrict-prototypes signal/signal.c
mips-linux-gnu-gcc -G 0 -msoft-float -static -o signal signal.o
我的完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
int a[10];
struct sigaction act;
int b[10];
int main ();
int main ()
{
int i;
//initialize a and b
for(i = 0 ; i < 10;i++)
{
a[i]=1;b[i]=1;
}
sigemptyset(&act.sa_mask);
//print
for(i = 0 ; i < 10;i++)
{
printf("%d %d ",a[i],b[i]);
}
return 0;
}
我发现使用 -muclibc
选项进行编译会导致此问题。
最佳答案
您正在显示struct sigaction act
在 a 数组之后,但在代码中您提到了 siginfo
变量,而不是act
。
可以 siginfo
在数组之前声明?你能展示一下这个函数在做什么吗?
关于c - sigemptyset() 正在覆盖下一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941156/