Как вызвать функцию из другого файла c
Перейти к содержимому

Как вызвать функцию из другого файла c

  • автор:

Как в функцию main вызвать функцию из другого .c файла

Author24 — интернет-сервис помощи студентам

Как передать функцию из другого класса в функцию glutSpecialFunc() которая находится в main?
В программе которая двигает нарисованную мною фигуру в OpenGl, есть функция регистрации нажатия.

Как в React в onclick вызвать функцию из другого файла
Допустим у меня есть файл heder.js import React, < Component >from ‘react’; import.

Эксперт C

27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979

Нужно, чтобы в состав проекта входили оба этих файла, main.c, second.c
Состав проекта в каждой ИДЕ указывается по-своему, но обычно довольно очевидным образом.

Меню пользователя @ qll

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604

Как вызвать функцию из .h в main ?
Здравствуйте! Помогите решить проблему. У меня есть много маленьких подзадачек в виде функций.

Как вызвать функцию из функции main?
работаю в деве. предположим я создал проект, изначально в нем находится файл main.cpp. предположим.

Транспонирование — как вызвать функцию из main
Вроде всё правильно но выдаёт ошибку Unresolved external ‘_main’ referenced from C:\PROGRAM.

Вызвать php функцию из другого файла и получить ответ
Добрый день/вечер, такой вопрос: есть php файл в котором лежат куча разных функций, и есть второй.

Или воспользуйтесь поиском по форуму:

как вызвать функцию из другого файла js

Для вызова функции из другого файла js необходимо сначала загрузить этот файл в текущий скрипт. Это можно сделать с помощью тега в html файле, где вы хотите вызвать функцию. Например, если у вас есть файл functions.js , который содержит функцию myFunction , то вам нужно добавить следующий тег в html файл:

 src="functions.js"> 

После этого вы можете вызвать функцию myFunction в текущем скрипте. Например:

myFunction(); 

Если вы хотите вызвать функцию из другого файла js внутри модуля (ES6 и выше), вы можете использовать ключевое слово import . Например, если у вас есть файл functions.js со следующим содержимым:

export const myFunction = () =>  console.log('Hello world!'); >; 

Тогда вы можете импортировать функцию myFunction в другом файле js следующим образом:

import  myFunction > from './functions.js'; myFunction(); 

Важно отметить, что для использования import и export вам нужно использовать модульный формат файла js (ES6 и выше), а также ваш файл js должен быть загружен в браузер с помощью тега .

Как вызвать функцию из другого файла c

Если программа содержит много кода, то более оптимально было бы разнести отдельные части кода по отдельным файлам. Например, одни функции могут храниться в одном файле исходного кода, другие функции — в другом файле.

Например, определим файл sum.cpp , который будет иметь следующий код:

int sum(int a, int b)

Это функция вычисления суммы чисел.

Добавим еще один файл — sum.h , который будет содержать объявление функции sum:

int sum(int, int);

И также определим главный файл, который назовем app.cpp :

#include #include "sum.h" // подключаем файл sum.h int main() < int result < sum(5, 4)>; std::cout #include "sum.h"

Файл sum.h еще называется заголовочным файлом (header file), так как содержит объявление, заголовок функции. ПРичем в данном случае предполагается что все файлы располагаются в одном каталоге:

Заголовочные файлы в языке программирования c++

Можно было бы и не подключать файл sum.h и вообще не создавать его, а объявление функции поместить непосредственно в файл app.cpp. Но при изменении функции может потребоваться изменить и ее объявление. И если функция sum используется в нескольких файлах с исходным кодом, то в каждом из этих файлов придется менять ее объявление. В данном же случае достаточно изменить объявление функции в одном файле — sum.h.

При компиляции через g++ необходимо передать все файлы через пробел компилятору:

g++ app.cpp sum.cpp -o app

То же самое верно и для компиляции через Clang::

clang++ app.cpp sum.cpp -o app.exe

На выходе будет сгенерирован единый файл app.

При работе в Visual Studio заголовочные файлы обычны помещаются в каталог «Headers»:

header files в языке программирования c++ в Visual Studio

А при компиляции все файлы автоматически компилируются в один.

Воспользоваться функцией из другого cpp/h файла

Во-первых, в .h -файлах нет никаких функций. Это просто кусок текста, вставляемый перед компиляцией вместо соответствующих директив #include . Соответственно, с точки зрения компилятора нет никакой разницы, включили ли вы заголовочный файл или просто взяли и скопировали его содержимое в свой .cpp руками.

То есть для решения вашей задачи нет разницы между заголовочным файлом с объявлением функции:

#pragma once void foo(int bar); 
#include "decl.h" int main() < foo(21); // Использование функции >
#include "decl.h" void foo(int bar) < // Реализация функции >

и повтором объявления в каждом .cpp -файле, которому нужна эта функция:

void foo(int bar); int main() < foo(21); // Использование функции >
void foo(int bar) < // Реализация функции >

Во-вторых, .cpp -файл — это «вещь в себе», чёрный ящик с двоичными данными и списком того, что этот ящик импортирует/экспортирует, и по каким байтовым смещениям в вышеуказанных данных это требуется/реализуется соответственно:

  1. Если в .cpp -файле производится обращение к чему-то, нереализованному в этом файле, и у компилятора есть объявление (то есть прототип для проверки корректности обращения), генерируется импорт этого чего-то по имени.
  2. Если в .cpp -файле объявляется не- static переменная либо функция (методы классов, кстати, тоже полноценные функции), генерируется экспорт.

И только потом, на этапе компоновки производится связывание соответствующих импортов и экспортов этих «чёрных ящиков» (а также подобных «ящиков», составляющих реализацию стандартной библиотеки).

Отслеживать
ответ дан 19 окт 2017 в 21:25
Arhadthedev Arhadthedev
11.5k 8 8 золотых знаков 43 43 серебряных знака 70 70 бронзовых знаков

Общий принцип — объявление ( void sort_mass(int*, int); ) должно быть доступно в момент использования для успешной компиляции (поэтому их обычно располагают в заголовочных файлах, включаемых в другие файлы.

Определение (тело функции) необходимо во время компоновки, и должно быть (если это не inline или static функция) единственным в программе. Поэтому, если оно находится в отдельном файле, этот файл должен быть скомпилирован и скомпонован с основной программой (включен в проект).

Такой файл может включаться в уже скомпилированном виде (как объектный файл или в составе библиотеки).

Отслеживать
ответ дан 15 окт 2017 в 13:12
222k 15 15 золотых знаков 120 120 серебряных знаков 234 234 бронзовых знака

Вы вызываете ее не «оттуда». Вызывается код функции, до компоновки находящийся в другом файле. А чтобы компилятор мог это сделать, ему нужно знать, что такая функция — с данным именем и параметрами — существует. Это как бы обещание 🙂 — мол, вызывай, не бойся — компоновщик найдет, что именно вызывать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *