170 похожих чатов

Привет! Имеет ли смысл засовывать определение функции в заголовычный файл,

чтобы потом вызвать её в source файле?

29 ответов

13 просмотров

Имеет, особенно если ты собираешься использовать эту функцию В НЕСКОЛЬКИХ исходных файлах

Nick-Semin Автор вопроса
Ilya Zviagin
Имеет, особенно если ты собираешься использовать э...

Вообще не хочу, но применить хочется :))) Спасибо, попытаюсь сделать. Нормально же будет на одну функцию выделять один файл?

Nick-Semin Автор вопроса
Nick-Semin Автор вопроса
Ilya Zviagin
Ничего ненормального в этом нет.

Могу ли я глдобальные переменные, объявив в исходном файле, использовать в загловоке как-либо? Я попробовал extern, но не помогло

Nick-Semin Автор вопроса
Ilya Zviagin
Лучше покажи код. (pastebin)

А с гита можно? А то там много заливать

Nick-Semin Автор вопроса

Только то, что там сейчас лежит, не работает. Подозреваю, что неправильно использовал extern

Nick Semin
Только то, что там сейчас лежит, не работает. Подо...

Где искать переменную? Какое имя у неё?

Nick-Semin Автор вопроса
Ilya Zviagin
Где искать переменную? Какое имя у неё?

pointLoad массив (упс) и beamLength. Должны быть в начале main.cpp

Nick Semin
Только то, что там сейчас лежит, не работает. Подо...

extern float pointLoad [10] [2]; //pointLoad array is used to store forces acting on a beam А где эта переменая определена?

Nick-Semin Автор вопроса
Ilya Zviagin
Где они определены?

Значения в цикле в функции forceInput спрашиваются на ввод. Это же не считает опредлением?

Nick Semin
Значения в цикле в функции forceInput спрашиваются...

В общем, в этом и проблема. Эти переменные у тебя ОБЪЯВЛЕНЫ, но не определены. extern float pointLoad [10] [2]; //pointLoad array is used to store forces acting on a beam extern float distributedLoad [5] [2]; //distributedLoad array is used to store distributed load, where magnitude per length is stored (N/m) and length of acting extern float beamLength; //Length of a beam это во - объявления переменных. Определений нет . Это означает буквально : "Где-то в моей будущей собранной программе будет глобальная переменная float pointLoad [10] [2]; , я определю её позже." НО она нигде не определяется.

Nick Semin
Значения в цикле в функции forceInput спрашиваются...

А суть тут в том, что тебе НЕ НУЖНО тут extern вообще, потому что у тебя — одна единица компиляции.

Nick-Semin Автор вопроса
Ilya Zviagin
А суть тут в том, что тебе НЕ НУЖНО тут extern воо...

Если я перепишу так, чтобы элементы массива определялись, можно будет один и тот же массив в обоих файлах использовать?

Nick-Semin Автор вопроса
Ilya Zviagin
В каких файлах?

Исходном и заголовчных

Nick Semin
Если я перепишу так, чтобы элементы массива опреде...

короче, убирай extern у всех трёх переменных, и живи пока так, тебе extern на хер не надо. У тебя там всё через жопу, но работать будет .

Nick Semin
Исходном и заголовчных

Заголовочный файл не является единицей трансляции. У тебя она одна — main.cpp

Nick Semin
Если я перепишу так, чтобы элементы массива опреде...

У тебя вообще ОДИН файл, используй сколько влезет всё, как тебе угодно.

Nick-Semin Автор вопроса
Ilya Zviagin
короче, убирай extern у всех трёх переменных, и жи...

Хех, хорошо. Просто все функции у меня были объявлены и определдены в одном файле, и всё работало, но я захотел фнукции определить в заголовчных файлах, чтобы в исходном не было слишком много строк А можно какие-нибудь советы, чтобы все было лучше, чем через жопу?

Nick Semin
Хех, хорошо. Просто все функции у меня были объявл...

C точки зрения языка ты не изменил ничего. ПОка будешь работать в этой же схеме, extern тебе не нужен.

Nick Semin
Хех, хорошо. Просто все функции у меня были объявл...

Раздели объявления функций (и других объектов) и определения. Объявления в *.h определения в *.cpp

Nick-Semin Автор вопроса
Ilya Zviagin
Раздели объявления функций (и других объектов) и о...

Понял, буду работать! Спасибо огромное за время

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

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Карта сайта