亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: noreturn屬性? [打印本頁]

作者: Horizon2012    時間: 2011-09-17 10:22
標題: noreturn屬性?

  1. #include <stdio.h>

  2. int __attribute__((noreturn)) func (int i)
  3. {
  4.         if (i < 5) {
  5.                 printf ("%d\n", i);
  6.         }else{
  7.                 printf ("return");
  8. //              return 1;
  9.         }
  10. }


  11. int main (int argc, char** argv)
  12. {
  13. //      int ret;
  14.          func (1);
  15.         //printf("ret = %d\n", ret);
  16. //      ret = func (8);
  17. //      printf("ret = %d\n", ret);
  18.         return 0;
  19. }

復制代碼
我聲明了函數(shù)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
我參看了網(wǎng)上的一些資料,改寫成這樣

  1. #include <stdio.h>

  2. void __attribute__((noreturn)) func (int i)
  3. {
  4.         printf("%d\n",i);
  5. }

  6. int print (int i)
  7. {
  8.         if (i > 4){
  9.                 return 1;
  10.         }else{
  11.                 func(2);
  12.         }
  13. }

  14. int main (int argc, char** argv)
  15. {
  16.         print (3);
  17. }

復制代碼
編譯打印
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://72891.cn/) Powered by Discuz! X3.2