[#11952] NORETURN — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

24 messages 2001/01/10
[#11956] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11957] Re: NORETURN — matz@... (Yukihiro Matsumoto) 2001/01/10

まつもと ゆきひろです

[#11958] Re: NORETURN — WATANABE Hirofumi <eban@...> 2001/01/10

わたなべです.

[#11959] CVS branches (Re: Re: NORETURN) — matz@... (Yukihiro Matsumoto) 2001/01/10

[#12087] string#index, gsub, []= のバグ? — Beyond <beyond@...>

18 messages 2001/01/27
[#12091] Re: string#index, gsub, []= のバグ? — matz@... (Yukihiro Matsumoto) 2001/01/27

まつもと ゆきひろです

[ruby-dev:11956] Re: NORETURN

From: WATANABE Hirofumi <eban@...>
Date: 2001-01-10 05:51:56 UTC
List: ruby-dev #11956
わたなべです.

"Nobuyoshi.Nakada" <nobu.nakada@nifty.ne.jp> writes:

:# 昔の gcc も __attribute__ じゃなくて前に volatile をつけるという方式だっ
:# たし。
:## ってそんな古いのには対応してないか。

今でも volatile は有効だから、gcc なら volatile という手もあ
ることはありますね。

それはそれとして Cygwin では
#define __stdcall __attribute__((stdcall))
なのでかなり前から gcc の前置き機能を使ってます。
#いやひょっとしたら逆に Cygnus が stdcall の機能を作ったのか?

:  で、古い gcc が前置きの __attribute__ を許さないなら前置き用と後置き用
:の NORETURN を作る、そうでなければ NORETURN を前に持ってくるというのでど
:うかと思うんですが…、もし他にも後置きで指定しないといけない処理系があっ
:たりするかもしれないので前者の方がいいかもって気がしてきました、書いてる
:うちに。

そうですね。
  void rb_exit _((int)) NORETURN;
じゃなくて
  NORETURN(void rb_exit _((int)));
という形式にすればどっちにも対応できていいかも。

#define NORETURN(x) x __attribte__ ((noreturn))

#define NORETURN(x) __declspec(noreturn) x

-- 
わたなべひろふみ

In This Thread