C言語なら、俺に聞け! <28>
■ このスレッドは過去ログ倉庫に格納されています
0136デフォルトの名無しさん
NGNG勉強しています。サンプルコードをコンパイル
しているなかでエラーが出たのですが教えて下さい。
apue/signals/setops.cのなかで
int
sigaddset(sigset_t *set, int signo)
{
if (SIGBAD(signo)) { errno = EINVAL; return(-1); }
*set |= 1 << (signo - 1);/* turn bit on */
return(0);
}
という個所があるのですが、この関数内における
*set |= 1 << (signo - 1);
という行においてエラーが出ます。gcc-2.95.4における
エラーメッセージは以下の通りです。
setops.c: In function `sigaddset':
setops.c:12: invalid operands to binary |
これはどういう意味なのでしょうか?
使っているLinuxの/usr/include/asm/signal.hにはsigset_tは
#define _NSIG64
#define _NSIG_BPW32
#define _NSIG_WORDS(_NSIG / _NSIG_BPW)
typedef struct {
unsigned long sig[_NSIG_WORDS];
} sigset_t;
このように定義してあります。
gccのコンパイラオプションで回避できるものなのでしょうか?
使っているマシン(i386)でsizeof(unsigned long)を確かめたところ
4バイトでした。
■ このスレッドは過去ログ倉庫に格納されています