Включая исходные файлы в C

Объяснение состоит в том, что self.onclick не означает то, что Вы думаете, что это означает в JavaScript. Это на самом деле означает эти onclick функция в прототипе объекта self (всегда не ссылаясь self самого).

JavaScript только имеет функции и никаких делегатов как C#, таким образом, не возможно передать метод И объект, к этому нужно относиться как обратный вызов.

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

var obj = ...;
function callback(){ return obj.method() };
something.bind(callback);
5
задан Mogsdad 28 August 2015 в 15:19
поделиться

5 ответов

Да, вы должны сообщить компилятору (обычно через make-файл, если вы не используете IDE) какие исходные файлы компилировать в объектные файлы, и компилятор компилирует каждый из них индивидуально. Затем вы даете компоновщику список объектных файлов для объединения в исполняемый файл. Если компоновщик ищет определение функции или класса и не может его найти, вы получите ошибку ссылки.

5
ответ дан 18 December 2019 в 08:29
поделиться

Компиляция на C или C ++ фактически разбита на 2 отдельных этапа.

  • компиляция
  • компоновка

Компилятор не знает о реализации example (). Он просто знает, что в какой-то момент будет определено что-то под названием example (). Таким образом, он просто сгенерировал код с заполнителями, например ()

Затем появляется компоновщик и разрешает эти заполнители.

Чтобы скомпилировать код с использованием gcc, вы должны сделать следующее.

gcc -c example.c -o example.o
gcc -c main.c -o main.o
gcc example.o main.o -o myProgram

Первые два вызова gcc - это шаги компиляции. Третий вызов - шаг компоновщика.

9
ответ дан 18 December 2019 в 08:29
поделиться

Компилятор не знает реализации example () при компиляции main.c - компилятор знает только подпись (как ее вызвать), которая была включена из файла заголовка. Компилятор создает объектные файлы .o, которые позже связываются компоновщиком для создания исполняемого двоичного файла. Процесс сборки можно контролировать с помощью IDE или, если вы предпочитаете Makefile. Make-файлы имеют уникальный синтаксис, который требует некоторого обучения, чтобы понять, но сделает процесс сборки намного понятнее. Если вы выполните поиск по Makefile, в Интернете можно найти множество хороших ссылок.

1
ответ дан 18 December 2019 в 08:29
поделиться

Это не ... вы должны это сказать.
Например, при использовании gcc сначала вы должны скомпилировать файлы:

gcc file1.c -c -ofile1.o
gcc file2.c -c -ofile2.o

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

gcc file1.o file2.o -oexecutable

В этот момент компоновщик просматривает эти предположения и «уточняет» их, т.е. проверяет, присутствуют ли они. Вот как это в основном работает ...

Что касается вашего вопроса IDE, Google "makefiles"

4
ответ дан 18 December 2019 в 08:29
поделиться

Компилятор этого не делает. Но ваш инструмент сборки умеет. IDE или make инструмент. руководство вручную Makefile s.

0
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

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