2010-10-03(Sun) << 2010-10-04(Mon) >> 2010-10-05(Tue)
Top > 2010-10-04
  • The added line is THIS COLOR.
  • The deleted line is THIS COLOR.
  • Go to 2010-10-04.

* 病院 [#nc74fc1e]
*. [#qb433780]

- ……と、ある人は言った。
--  http://webcache.googleusercontent.com/search?q=cache:www.issei.org/diary/_20030224/d200010.html

 int i = 0;			// レジスタ %x に割り当て
 if (setjmp(jmp_env) == 0)	// %x を含むレジスタを jmp_env に退避
 {
 	i++;			// %x <- %x + 1
 	longjmp(jmp_env, 1);	// %x を含むレジスタを jmp_env から復元
 				// して、ブロックから抜ける
 }
 printf("i = %d\n", i);		// %x の値は 0 のまま

 解決策は変数を volatile 宣言すること。これで変数の値をレジスタにキャッシュせず、
 毎回メモリを参照するようになるので、longjmp() しても変数の値が破壊されることがなくなる。 


Reload   Diff   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes