У меня есть вопрос относительно другого вопроса, задаваемого при переполнении стека: - ошибка сегментации на c K & R fopen и fillbuf .В этом вопросе идет обсуждение флагов в struct _iobuf.Они используются в качестве разных режимов доступа.Но здесь, в enum flags, есть некоторые конкретные значения флагов.Так будет ли 'flag' принимать только эти конкретные значения, или это некоторые стандартные значения, тогда как flag может принимать и некоторые другие значения?Мое сомнение возникает из-за того, что при определении массива _iob были заданы только три стандартных значения (для stdin, stdout, stderr) (из 20), поэтому fp может принимать и некоторые другие значения (17 других одновременно),Второе сомнение заключается в том, что если флаг может принимать только определенные значения, такие как (_READ, _WRITE и т. Д.), То в функции int _fillbuf () вместо записи
if((fp->flag & (_READ|_EOF|_ERR))!=_READ)
мы можем записать как
if((fp->flag==_WRITE || fp->flag== _UNBUF))
потому что из заданных фиксированных значений флага это все еще имеет смысл.