Оба являются разными способами определения функции. Разница заключается в том, как браузер интерпретирует и загружает их в контекст выполнения.
Первый случай - выражение функции, которое загружается только тогда, когда интерпретатор достигает этой строки кода. Поэтому, если вы сделаете это следующим образом, вы получите сообщение об ошибке, что functionOne не является функцией.
functionOne();
var functionOne = function() {
// Some code
};
Причина в том, что в первой строке не присваивается значение functionOne, и, следовательно, это не определено. Мы пытаемся назвать его как функцию, и, следовательно, получаем ошибку.
Во второй строке мы назначаем ссылку анонимной функции на функциюOne.
Вторая case - это объявления функций, которые загружаются до выполнения любого кода. Поэтому, если вы сделаете следующее, вы не получите никакой ошибки, поскольку объявление загружается до выполнения кода.
functionOne();
function functionOne() {
// Some code
}
makefile имеет очень тупое отношение к вкладкам, все действия каждого правила идентифицируются с помощью вкладок ...... и No 4 пробелов не делают вкладку, только вкладка делает вкладку ...
, чтобы проверить, что я использую команду cat -e -t -v makefile_name
, она показывает, что наличие вкладок с символами ^ I и окончания строк с помощью $ оба являются жизненно важными, чтобы гарантировать, что зависимости заканчиваются должным образом, а вкладки отмечают действие для правил, поэтому что они легко идентифицируются с помощью утилиты make .....
example:
Kaizen ~/so_test $ cat -e -t -v mk.t
all:ll$ ## here the $ is end of line ...
$
ll:ll.c $
^Igcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<$
## the ^I above means a tab was there before the action part, so this line is ok .
$
clean :$
\rm -fr ll$
## see here there is no ^I which means , tab is not present ....
## in this case you need to open the file again and edit/ensure a tab
## starts the action part
надеюсь, что это поможет !!
В коде VS просто нажмите «Пробел: 4» в правом углу и измените его на вкладку при редактировании Makefile.
Если кто-то из вас использует продукт Intellij, решение для этого следующее:
Other File Types
. Use tab character
и будьте осторожны, значения Tab size
и Indent
должны быть 4. Вы всегда должны писать команду после «вкладки», а не пробела.
Это относится к строке «gcc» (строка № 4) в вашем случае. Вам нужно вставить вкладку перед gcc.
Также замените\rm -fr ll на "rm -fr ll". Вставьте вкладки еще перед этой командой
Это потому, что табуляция заменяется пробелами. Чтобы отключить эту функцию, перейдите к
gedit-> edit-> preferens-> editor
и удалите проверку на
«замените закладку пробелом»
Его довольно старый вопрос, но все же я хотел бы сказать еще об одном варианте с помощью редактора vi/vim
для визуализации вкладок. Если у вас установлен vi/vim
, откройте Makefile
(например, vim Makefile
) и введите :set list
. Это покажет количество вкладок, вставленных, как показано ниже,
%-linux: force$
^I@if [ "$(GCC_VERSION)" = "2.96" ] ; then \$
^I^Iecho ===== Generating build tree for legacy $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@ legacy; \$
^Ielse \$
^I^Iecho ===== Generating build tree for $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@; \$
^Ifi$
^Icd build-$@;make$
Ключевым моментом было «HARD TAB» 1. Убедитесь, что вы использовали TAB вместо пробела. 2. Проверьте свой .vimrc на «set tabstop = X»
makefile
из учебника, и это не сработало. Только после удаления пробелов и установкиTab
вместо этого! – rzaaeeff 8 August 2015 в 07:12-v
для командыcat
здесь избыточно, потому что-e
означает-vE
и-t
означает-vT
. – zack 25 April 2016 в 10:38