#include #define LOG_LEVEL 0 #define LOG_VERBOSE 1 #define LOG_INFO 5 #define LOG_ERROR 10 #define LOG(level, ...) if (LOG_LEVEL <= level) printf(__VA_ARGS__) #define CHECK_ZERO(d) if (d==0) LOG(LOG_ERROR, "Divide by zero line:%d file:%s\n", __LINE__, __FILE__) #define FUNC_START() if (LOG_LEVEL <= LOG_INFO) printf("start %s\n", __func__) #define FUNC_END() if (LOG_LEVEL <= LOG_INFO) printf("finish %s\n", __func__) #define TO_UPPER(c) (c>='a' &&c<='z')?c+('A'-'a'):c void v1() { FUNC_START(); for (int i=0; i<10; i++) { CHECK_ZERO(i); LOG(LOG_VERBOSE, "%d %c %c\n", i, 'a'+i, TO_UPPER('a'+i)); } FUNC_END(); } int main(int argc, char * argv[]) { for (int i=0; i