Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для Intel~lect
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355

Как сделать чтобы функция была видна из .cpp файла?

21.08.2012, 09:02. Показов 5943. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть 3 файла: main.cpp, 1.h, 1.cpp. Все делаю по книге, но получается так, что определение функции не видно из main().cpp

main.cpp
C++
1
2
3
4
5
6
7
8
#include "1.h"
 
int main()
{
   func1();  // Ошибка. Undefined reference to 'func1(void)'
 
   return 0;
}
1.h
C++
1
void func1();  // прототип функции
1.cpp
C++
1
2
3
4
5
#include "1.h"
void func1()     // определение функции
{
   //...
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2012, 09:02
Ответы с готовыми решениями:

Как сделать так, чтобы если выбрал одного пользователя была видна кнопка, а если другого пользователя не видна
Как сделать так, чтобы если выбрал одного пользователя была видна кнопка, а если другого пользователя не видна.

Как сделать чтобы не была видна рубрика и все ее записи
Допустим создал я рубрику,сделал в ней записи и как сделать так чтобы ее не было видно в навигации сайта и админ панели?

Как сделать чтобы некоторые столбцы в JTable не редактировались и была видна шапка таблицы
Такие проблемы: 1. Не видна шапка таблицы. 2. Как сделать, чтобы некоторые столбики не можно было редактировать? 3. Как сделать,...

51
22.08.2012, 03:58
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от alkagolik Посмотреть сообщение
Стоять должен там, где нужно.
Тут я не имел ввиду какие-то инструкции. Имелось ввиду, как нужно тому, кто код пишет. Я же дальше написал, что можно написать и по вашему, и использовать это в программе. Ничему ваш код не противоречит. Просто разговор о другом зашёл, а именно: как избежать многократного включения заголовочного файла (и ТС тут не причём, у него причина совсем в другом была). Как использовать ваш код для решения именно этой задачи, я не пойму. А в остальном, хозяин - барин.

0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
22.08.2012, 04:12
Цитата Сообщение от ValeryS Посмотреть сообщение
ты не поверишь, это один из способов выбросить из компиляции участок кода
некоторые комментируют, а некоторые вот так выбрасывают
ты не поверишь. это различие между релиз и дебаг компиляцией.

Добавлено через 13 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Стоять должен там, где нужно.
Цитата Сообщение от alsav22 Посмотреть сообщение
Ничему ваш код не противоречит.
ну бывает. я понимаю, ошибочно включился в спор, сам не понял о чем спор и т.д. у всех бывает. Все мы не ангелы. Пойду бухать
0
22.08.2012, 04:26

Не по теме:

Цитата Сообщение от alkagolik Посмотреть сообщение
Все мы не ангелы.
Это точно.

0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
22.08.2012, 04:55
ну вот еще напоследок
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
indicator@pc-host:~$ cat test.c 
#include "header.h" 
 
int main() {
#undef HEADER_H 
    foo();
#define HEADRE_H
    return 0;
}
indicator@pc-host:~$ cat foo.c 
#include "header.h"
 
void foo(){
    fprintf(stdout, "%s\n", "I'm foo");
}
indicator@pc-host:~$ cat header.h 
#ifndef HEADER_H
#define HEADER_H
#endif
#include <cstdio>
 
void foo();
indicator@pc-host:~$ g++ test.c foo.c 
indicator@pc-host:~$ ./a.out 
I'm foo
indicator@pc-host:~$
данная констукция демострирует что нам как бэ по хер и мы все равно дополняем свой код библиотеками cstdio.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
22.08.2012, 19:20
alkagolik, все элементарно. Есть у нас заголовочный файл с некой константой:
C++
1
2
3
// constant.h
 
const int constant = 0;
Теперь мы берем и включаем его два раза в исходный файл:
C++
1
2
3
4
5
// main.cpp
#include "constant.h"
#include "constant.h"
 
int main() { }
После препроцессирования получаем:
C++
1
2
3
4
5
6
// main.cpp
 
const int constant = 0;
const int constant = 0;
 
int main() { }
Как видим constant определена дважды, что нарушает One Definition Rule и о чем нам скажет компилятор.
Header guards решают эту проблему. Вот правильный Header guard:
C++
1
2
3
4
5
6
7
// constant.h
#ifndef CONSTANT_H
#define CONSTANT_H
 
const int constant = 0;
 
#endif
В ходе препроцессирования второго включения все расположенное между #ifndef .. #endif будет вырезано, т.к. CONSTANT_H будет определена в ходе обработки первого включения, т.е. мы получим:
C++
1
2
3
4
5
// main.cpp
 
const int constant = 0;
 
int main() { }
Как видим определение одно и все прекрасно компиляется.
Теперь твой вариант:
C++
1
2
3
4
5
6
// constant.h
#ifndef CONSTANT_H
#define CONSTANT_H
#endif
 
const int constant = 0;
Опять же препроцессор вырезает все между #ifndef .. #endif при обработке второго включения, но т.к. определение constant не находится между этим директивами оно успешно попадает в main.cpp второй вариант, тем сымым возвращая нас к исходной проблеме двух определений.
0
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
22.08.2012, 19:25
У тебя какой компилятор?
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
22.08.2012, 21:45
CyBOSSeR, взял и обломал всю малину. Такая баталия веселая была...
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
23.08.2012, 01:22
Цитата Сообщение от alkagolik Посмотреть сообщение
Такая баталия веселая была...
Баталии хороши когда он полезны, а тут 3 страницы постов ниочем.
0
 Аватар для Intel~lect
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
23.08.2012, 09:12  [ТС]
Цитата Сообщение от !Андрей! Посмотреть сообщение
У тебя какой компилятор?
CobeBlocks 10.05
0
 Аватар для defer
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
23.08.2012, 09:36
Цитата Сообщение от Intel~lect Посмотреть сообщение
CobeBlocks 10.05
Это IDE, а компилятор какой-то gcc, в командной строке напишите g++ -v
0
 Аватар для Intel~lect
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
23.08.2012, 09:50  [ТС]
defer, Компилятор у меня вроде бы MinGW.

Не по теме:

Если честно, то во всех этих компиляторах я очень плохо разбираюсь

0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2012, 10:24
Цитата Сообщение от Intel~lect Посмотреть сообщение
Если честно, то во всех этих компиляторах я очень плохо разбираюсь
Для информации.
Миниатюры
Как сделать чтобы функция была видна из .cpp файла?   Как сделать чтобы функция была видна из .cpp файла?   Как сделать чтобы функция была видна из .cpp файла?  

Как сделать чтобы функция была видна из .cpp файла?  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.08.2012, 10:24

Как сделать чтобы в combobox по умолчанию была сразу видна определенная строка из списка?
как сделать чтобы в combobox по умолчанию была сразу видна определенная строка из списка? известно ее значение, но не порядковый номер в...

Как в windows7 сделать так,чтобы папка была видна,но ее никто кроме меня не мог удалить и скопировать???
Подскажите пожалуйста как в windows7 сделать так,чтобы папка была видна,но ее никто кроме меня не мог удалить и скопировать???

как сделать так, чтобы одна xp машина с одной картой была видна в сети под несколькими ip-адресами?
обычно у людей противоположная задача, ну а у меня такая. имеется одна машина, нужно на ней запустить несколько экземпляров приложения,...

Как объявить переменную так, чтобы она была видна в .h файле?
День всем добрый! Допустим, есть у меня код в главном .cpp файле: #include &quot;Windows.h&quot; #include &quot;my.h&quot; ...

Как объявить переменную, чтобы она была видна для нескольких функций?
У меня возникла проблема с переменными. В функции Button Click я создаю переменную string s = text1.tex; И у меня есть другая функция...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Закрытая тема Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru