Из man bash
, тогда, если PAGER меньше / time
.
blockquote>If the time reserved word precedes a pipeline, the elapsed as well as user and system time consumed by its exe- cution are reported when the pipeline terminates. The -p option changes the output format to that specified by POSIX. The TIMEFORMAT variable may be set to a format string that specifies how the timing information should be displayed; see the description of TIMEFORMAT under Shell Variables below.
затем
/TIMEFORMAT
blockquote>The optional l specifies a longer format, including minutes, of the form MMmSS.FFs. The value of p determines whether or not the fraction is included. If this variable is not set, bash acts as if it had the value blockquote>
Если его можно изменить на что-то вроде
TIMEFORMAT=
без
l
суммировать проще.Обратите внимание, что формат также может зависеть от локали
LANG
:сравнить
(LANG=fr_FR.UTF-8; time sleep 1)
и
(LANG=C; time sleep 1)
. В этом случае сумма может быть сделана с помощью внешний инструмент, такой как
awk
awk '/^real/ {sum+=$2} END{print sum} ' times.txt
или perl
\nreal\t%3R'perl -aln -e '$sum+=$F[1] if /^real/; END{print $sum}' times.txt
без
l
суммировать проще.Обратите внимание, что формат также может зависеть от локали
LANG
:сравнить
(LANG=fr_FR.UTF-8; time sleep 1)
и
(LANG=C; time sleep 1)
. В этом случае сумма может быть сделана с помощью внешний инструмент, такой как
awk
awk '/^real/ {sum+=$2} END{print sum} ' times.txt
или perl
\nreal\t%3lR\nuser\t%3lU\nsys%3lS'. If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed.perl -aln -e '$sum+=$F[1] if /^real/; END{print $sum}' times.txt
Если его можно изменить на что-то вроде
TIMEFORMAT=
без
l
суммировать проще.Обратите внимание, что формат также может зависеть от локали
LANG
:сравнить
(LANG=fr_FR.UTF-8; time sleep 1)
и
(LANG=C; time sleep 1)
. В этом случае сумма может быть сделана с помощью внешний инструмент, такой как
awk
awk '/^real/ {sum+=$2} END{print sum} ' times.txt
или perl
\nreal\t%3R'perl -aln -e '$sum+=$F[1] if /^real/; END{print $sum}' times.txt
без
l
суммировать проще.Обратите внимание, что формат также может зависеть от локали
LANG
:сравнить
(LANG=fr_FR.UTF-8; time sleep 1)
и
(LANG=C; time sleep 1)
. В этом случае сумма может быть сделана с помощью внешний инструмент, такой как
awk
awk '/^real/ {sum+=$2} END{print sum} ' times.txt
или perl
perl -aln -e '$sum+=$F[1] if /^real/; END{print $sum}' times.txt
C99 путь, также поддерживаемый VC ++ компилятор.
#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)
Я не думаю, что это возможно, Вы могли фальсифицировать его с двойным parens... столь же долго Вам не нужны аргументы индивидуально.
#define macro(ARGS) some_complicated (whatever ARGS)
// ...
macro((a,b,c))
macro((d,e))
#define DEBUG
#ifdef DEBUG
#define PRINT print
#else
#define PRINT(...) ((void)0) //strip out PRINT instructions from code
#endif
void print(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
vsprintf(str, fmt, args);
va_end(args);
printf("%s\n", str);
}
int main() {
PRINT("[%s %d, %d] Hello World", "March", 26, 2009);
return 0;
}
Если компилятор не понимает variadic макросы, можно также разделить ПЕЧАТЬ с любым из следующего:
#define PRINT //
или
#define PRINT if(0)print
Первое комментирует инструкции по ПЕЧАТИ, второе предотвращает инструкцию по ПЕЧАТИ из-за ПУСТОГО УКАЗАТЕЛЯ если условие. Если оптимизация установлена, компилятор должен разделить, никогда не выполнял инструкции как: если (0) печать ("привет мир"); или ((пусто) 0);
объясненный для g ++ здесь, хотя это - часть C99 так, должен работать на всех
http://www.delorie.com/gnu/docs/gcc/gcc_44.html
быстрый пример:
#define debug(format, args...) fprintf (stderr, format, args)