История изменений
Исправление 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;
}