Не удалось запустить простую программу Vulkan на Linux [duplicate]

Оба являются разными способами определения функции. Разница заключается в том, как браузер интерпретирует и загружает их в контекст выполнения.

Первый случай - выражение функции, которое загружается только тогда, когда интерпретатор достигает этой строки кода. Поэтому, если вы сделаете это следующим образом, вы получите сообщение об ошибке, что functionOne не является функцией.

functionOne();
var functionOne = function() {
    // Some code
};

Причина в том, что в первой строке не присваивается значение functionOne, и, следовательно, это не определено. Мы пытаемся назвать его как функцию, и, следовательно, получаем ошибку.

Во второй строке мы назначаем ссылку анонимной функции на функциюOne.

Вторая case - это объявления функций, которые загружаются до выполнения любого кода. Поэтому, если вы сделаете следующее, вы не получите никакой ошибки, поскольку объявление загружается до выполнения кода.

functionOne();
function functionOne() {
   // Some code
}
266
задан Greg 5 June 2013 в 06:20
поделиться

8 ответов

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

надеюсь, что это поможет !!

516
ответ дан xaxxon 22 August 2018 в 05:26
поделиться
  • 1
    «makefile имеет очень тупое отношение к вкладкам, все действия каждого правила идентифицируются с помощью вкладок ...... и № 4 пробелов не делают вкладку, только вкладка делает вкладку», это очень помогло – oiyio 13 April 2014 в 12:41
  • 2
    & quot; cat -e -t -v makefile_name & quot; это лучшее. Когда-либо. Я продолжал смотреть на экран, видя, что выглядит как вкладка, полностью отсутствует, что это ОДНА ЛИНИЯ во всем файле, который использовал пробелы вместо жесткой вкладки. – arinmorf 1 February 2015 в 16:44
  • 3
    Огромное спасибо! Я составляю исходный код большого проекта. Введенные некоторые строки в makefile из учебника, и это не сработало. Только после удаления пробелов и установки Tab вместо этого! – rzaaeeff 8 August 2015 в 07:12
  • 4
    При копировании / вставке из одного файла makefile в другой с помощью редактора vi (или vim) убедитесь, что вы случайно не захватили строку ~ (тильда), указывающую конец файла. Настоящий ~ выглядит как маркер vi и вызывает «*** отсутствующий разделитель». Stop & Quot. ошибка. Это может показаться очевидным, но когда это случается случайно, это далеко не очевидно. Дополнительную информацию см. В комментариях моего блога . – Scott 26 February 2016 в 02:11
  • 5
    -v для команды cat здесь избыточно, потому что -e означает -vE и -t означает -vT. – zack 25 April 2016 в 10:38
  • 6
    – user3479125 6 May 2016 в 17:48

В коде VS просто нажмите «Пробел: 4» в правом углу и измените его на вкладку при редактировании Makefile.

15
ответ дан alanwsx 22 August 2018 в 05:26
поделиться
  • 1
    Я даже не заметил этого там - спасибо за эту информацию. Раньше я использовал regex find-replace, но это намного лучше. – Peanut 22 March 2017 в 15:52
  • 2
    VS Code признал, что мой файл «common.mk», извлеченный из файла «Makefile» без суффикса, был файлом make и правильно его подсвечивал, но тихо начал отступать от пробелов вместо вкладок. – Francis Norton 8 January 2018 в 19:28
  • 3
    Спасибо за помощь! Я определенно не заметил, что в этом нижнем углу были настройки вкладки. – se_brandon 17 August 2018 в 13:15

Если кто-то из вас использует продукт Intellij, решение для этого следующее:

  1. Перейдите в раздел «Настройки»> «Редактор»> «Стиль кода»
  2. здесь для выбора типа файла, связанного с вашей проблемой. Но, скорее всего, вам нужно выбрать Other File Types.
  3. В открывшейся вкладке отметьте флажок для Use tab character и будьте осторожны, значения Tab size и Indent должны быть 4.
0
ответ дан Bogdan Alexandru Militaru 22 August 2018 в 05:26
поделиться

Вы всегда должны писать команду после «вкладки», а не пробела.

Это относится к строке «gcc» (строка № 4) в вашем случае. Вам нужно вставить вкладку перед gcc.

Также замените\rm -fr ll на "rm -fr ll". Вставьте вкладки еще перед этой командой

17
ответ дан Denny Mathew 22 August 2018 в 05:26
поделиться
  • 1
    Чтобы быть предельно ясным, должен быть жесткий символ TAB в качестве первого символа в каждой строке логического рецепта. После TAB вы можете добавить любые пробелы, которые вы хотите. – MadScientist 5 June 2013 в 13:47
  • 2
    должно ли табличное пространство быть равно 2 или 4? в /.vimrc установить tabstop = 2 или 4? – Rahul Reddy 5 June 2013 в 18:52
  • 3
    @RahulReddy, как редактор отображает вкладку, не имеет никакого отношения к тому, есть или нет символ табуляции в конфигурации. – xaxxon 14 May 2018 в 11:14

Это потому, что табуляция заменяется пробелами. Чтобы отключить эту функцию, перейдите к

gedit-> edit-> preferens-> editor

и удалите проверку на

«замените закладку пробелом»

0
ответ дан Mansuro 22 August 2018 в 05:26
поделиться
  • 1
    Где он говорит, что он использует gedit? – Kusalananda 11 July 2016 в 05:33

Его довольно старый вопрос, но все же я хотел бы сказать еще об одном варианте с помощью редактора 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$
2
ответ дан Panch 22 August 2018 в 05:26
поделиться

Ключевым моментом было «HARD TAB» 1. Убедитесь, что вы использовали TAB вместо пробела. 2. Проверьте свой .vimrc на «set tabstop = X»

3
ответ дан wlsherica 22 August 2018 в 05:26
поделиться
1
ответ дан riguang zheng 5 November 2018 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: