LINUX.ORG.RU

История изменений

Исправление legolegs, (текущая версия) :

С точки зрения читаемости лучший вариант, имхо:

int somefunc(flags) {
  int incompatibleflags = flags & (ALIASING|ANTIALIASING|ONLYPIXELS);
  if (incompatibleflags!=ALIASING &&
      incompatibleflags!=ANTIALIASING &&
      incompatibleflags!=ONLYPIXELS)
      return 1; //error

Вот именно так. Если уж у тебя от содержимого if такой баттхёрт, можно сократить

int isPow2(int a) {
  return !(a&(a-1));
}
int somefunc(flags) {
  int incompatibleflags = flags & (ALIASING|ANTIALIASING|ONLYPIXELS);
  if (!isPow2(incompatibleflags))
    return 1; //error

Но самым правильным способом будет совместимые опции сделать флагами, а несовместимые - отдельным enum { A=0, B=1, C=2, D=3 }.

Исходная версия legolegs, :

С точки зрения читаемости лучший вариант, имхо:

int somefunc(flags) {
  int incompatibleflags = flags & (ALIASING|ANTIALIASING|ONLYPIXELS);
  if (incompatibleflags!=ALIASING &&
      incompatibleflags!=ANTIALIASING &&
      incompatibleflags!=ONLYPIXELS)
      return 1; //error

Вот именно так. Если уж у ебя от содержимого такой баттхёрт, можно сократить

int isPow2(int a) {
  return !(a&(a-1));
}
int somefunc(flags) {
  int incompatibleflags = flags & (ALIASING|ANTIALIASING|ONLYPIXELS);
  if (!isPow2(incompatibleflags))
    return 1; //error

Но самым правильным способом будет совместимые опции сделать флагами, а несовместимые - отдельным enum { A=0, B=1, C=2, D=3 }.