LINUX.ORG.RU

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

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

это проблема из си

вообще авторов си надо немножко расстрелять за то, что они, сделав якобы «удобство», не предусмотрели возможность его хотя бы выключить, не говоря уж кастомизировать

рассмотрим такой код — разумно здесь конвертацию в bool сделать ровно наоборот

enum network_result_t { NET_SUCCESS=0, CAN_NOT_RESOLVE_HOSTNAME, NO_ROUTE_TO_HOST};

network_result_t r = do_something(....);
if( r ) { // тут разумно было бы 0 конвертировать в true
  printf("all ok\n");
}else{
  printf("error: ");
  ....
}

или вот — опять разумно здесь конвертацию в bool сделать ровно наоборот

char* result = do_something(....);
if( result ) { // тут разумно было бы NULL конвертировать в true
  printf("all ok\n");
}else{
  printf("error: %s", result);
  ....
}

ну и да — с чего они сделали true=1, а не 0xFFFFFFFF (по числу разрядов), мне не ясно

з.ы. еще одно якобы удобство из си — это арифметика указателей, и опять из-за своей некастомизируемости

Исправление www_linux_org_ru, :

это проблема из си

вообще авторов си надо немножко расстрелять за то, что они, сделав якобы «удобство», не предусмотрели возможность его хотя бы выключить, не говоря уж кастомизировать

рассмотрим такой код — разумно здесь конвертацию в bool сделать ровно наоборот

enum network_result_t { NET_SUCCESS=0, CAN_NOT_RESOLVE_HOSTNAME, NO_ROUTE_TO_HOST};

network_result_t r = do_something(....);
if( r ) { // тут разумно было бы 0 конвертировать в true
  printf("all ok\n");
}else{
  printf("error: ");
  ....
}

или вот — опять разумно здесь конвертацию в bool сделать ровно наоборот

char* result = do_something(....);
if( result ) { // тут разумно было бы NULL конвертировать в true
  printf("all ok\n");
}else{
  printf("error: %s", result);
  ....
}

ну и да — с чего они сделали true=1, а не 0xFFFFFFF (по числу разрядов), мне не ясно

з.ы. еще одно якобы удобство из си — это арифметика указателей, и опять из-за своей некастомизируемости

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

это проблема из си

вообще авторов си надо немножко расстрелять за то, что они, сделав якобы «удобство», не предусмотрели возможность его хотя бы выключить, не говоря уж кастомизировать

рассмотрим такой код — разумно здесь конвертацию в bool сделать ровно наоборот

enum network_result_t { NET_SUCCESS=0, CAN_NOT_RESOLVE_HOSTNAME, NO_ROUTE_TO_HOST};

network_result_t r = do_something(....);
if( r ) { // тут разумно было бы 0 конвертировать в true
  printf("all ok\n");
}else{
  printf("error: ");
  ....
}

или вот — опять разумно здесь конвертацию в bool сделать ровно наоборот

char* result = do_something(....);
if( result ) { // тут разумно было бы NULL конвертировать в true
  printf("all ok\n");
}else{
  printf("error: %s", result);
  ....
}

еще одно якобы удобство из си — это арифметика указателей, и опять из-за своей некастомизируемости