С помощью опции -Wwrite-strings
вы получите:
warning: initialization discards qualifiers from pointer target type
Независимо от этой опции GCC помещает литералы в раздел памяти только для чтения, если не сказать иначе, используя -fwritable-strings
(однако эта опция был удален из недавних версий GCC).
Параметры командной строки не являются константами, они обычно живут в стеке.
В CMD, '& &'; означает, "выполняют команду 1, и если она успешно выполняется, выполните команду 2". Я использовал его для вещей как:
build && run_tests
В PowerShell, самая близкая вещь, которую можно сделать:
(build) -and (run_tests)
Это имеет ту же логику, но синтезируемый текст от команд потерян. Возможно, это достаточно хорошо для Вас, все же.
РЕДАКТИРОВАНИЕ
при выполнении этого в сценарии Вы, вероятно, будете более обеспеченным разделением операторов, как это:
build
if ($?) {
run_tests
}
Это зависит от контекста, но здесь является примером "-и" в действии:
get-childitem | where-object { $_.Name.StartsWith("f") -and $_.Length -gt 10kb }
Таким образом, это получает все файлы, больше, чем 10 КБ в каталоге, имя файла которого запускается с "f".
& & и || были в списке вещей реализовать (все еще), но не открывался как следующая самая полезная вещь добавить. Причина состоит в том, что мы имеем - И и - ИЛИ. Если Вы думаете, что это важно, зарегистрируйте предложение на Подключении, и мы рассмотрим это для V3.
{
вместо ;
т.е., не действительно имеет значение сколько нечто структуры'; имейте только, когда struct foo { ...}
foo
struct
будет установлен. Следующий пример хорошо работает даже включая -Wall -Wextra
: struct foo; struct foo; struct foo { int a, b, c; char *s; };
– Jack
29 November 2012 в 15:06
typedef struct Foo {...} Foo;
что касаетсяtypedef struct Foo Foo;
только{...}
, часть опущена. – Need4Steed 29 November 2012 в 13:18