Chinaunix
标题:
noreturn属性?
[打印本页]
作者:
Horizon2012
时间:
2011-09-17 10:22
标题:
noreturn属性?
#include <stdio.h>
int __attribute__((noreturn)) func (int i)
{
if (i < 5) {
printf ("%d\n", i);
}else{
printf ("return");
// return 1;
}
}
int main (int argc, char** argv)
{
// int ret;
func (1);
//printf("ret = %d\n", ret);
// ret = func (8);
// printf("ret = %d\n", ret);
return 0;
}
复制代码
我声明了函数func为noreturn,为什么编译的时候会打印
test_3.c: In function 'func':
test_3.c:11: warning: 'noreturn' function does return
运行时候打印
1
Segmentation fault
即使我不注释掉func中的return 1 还是会这样的?
noreturn 属性到底咋用的?
作者:
Horizon2012
时间:
2011-09-17 11:05
我参看了网上的一些资料,改写成这样
#include <stdio.h>
void __attribute__((noreturn)) func (int i)
{
printf("%d\n",i);
}
int print (int i)
{
if (i > 4){
return 1;
}else{
func(2);
}
}
int main (int argc, char** argv)
{
print (3);
}
复制代码
编译打印
test_3.c: In function 'func':
test_3.c:7: warning: 'noreturn' function does return
运行的时候一直打印:
2
2
2
2
2
。
。
。
2
2
2
Segmentation fault
感觉好像反复调用func(2); 那样?
这是什么原因呢?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2