LINUX.ORG.RU

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

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

В данном случае макрос выглядит как функция, но на самом деле - ничего общего

Ну ок. А я думал макросы без скобок только для значений (#define BUF_LEN 1024), а для остального принято ставить скобки

можно вставить return и метку прямо в тело функции, и от этого читаемость кода только увеличится.

А если разные значения возвращаются?


enum FB function f(int n){
define CLEAN_N_RETURN(result) \{
  clean(); \
  return result; \
}

  alloc_something();

  if(n == 9) CLEAN_N_RETURN(FIZZ);
  else if(n == 20) CLEAN_N_RETURN(BUZZ);
}


// VS

enum FB function f(int n){
  alloc_something();

  if(9){
    result = FIZZ;
    goto end;
  }
  else if(20) {
    result = BUZZ;
    goto end;
  }

  end:
    clean()
    return result;
}
  

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

В данном случае макрос выглядит как функция, но на самом деле - ничего общего

Ну ок. А я думал макросы без скобок только для значений (#define BUF_LEN 1024), а для остального принято ставить скобки

можно вставить return и метку прямо в тело функции, и от этого читаемость кода только увеличится.

А если разные значения возвращаются?


enum FB function f(int n){
define CLAEN_N_RETURN(result) \{
  clean(); \
  return result; \
}

  alloc_something();

  if(n == 9) CLEAN_N_RETURN(FIZZ);
  else if(n == 20) CLEAN_N_RETURN(BUZZ);
}


// VS

enum FB function f(int n){
  alloc_something();

  if(9){
    result = FIZZ;
    goto end;
  }
  else if(20) {
    result = BUZZ;
    goto end;
  }

  end:
    clean()
    return result;
}
  

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

В данном случае макрос выглядит как функция, но на самом деле - ничего общего

Ну ок. А я думал макросы без скобок только для значений (#define BUF_LEN 1024), а для остального принято ставить скобки

можно вставить return и метку прямо в тело функции, и от этого читаемость кода только увеличится.

А если разные значения возвращаются?


enum FB function f(int n){
define CLAEN_N_RETURN(result) \{
  clean(); \
  return result; \
}

  alloc_something();

  if(n == 9) CLEAN_N_RETURN(FIZZ);
  else if(n == 20) CLEAN_N_RETURN(BUZZ);
}


// VS

enum FB function f(int n){
  alloc_something();

  if(9){
    result = FIZZ;
    goto end;
  }
  else if(20) {
    result = BUZZ;
    goto end;
  }

  end:
    clean()
    return result;
}