Форум программистов, компьютерный форум CyberForum.ru

Обращение файлов cpp - C++

Восстановить пароль Регистрация
 
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
19.10.2013, 13:19     Обращение файлов cpp #1
Всем привет!

Изображу наглядно код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
main.cpp
#include <iostream>
using namespace std;
 
void raznica();
void summa();
 
int main()
{
    cout << "1. хочу вычесть\n";
    cout << "2. хочу сложить\n";
    cin >> a;
    if (a==1)
    {
        raznica();
    }
    if (a==2)
    {
        summa();
    }
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
raznica.cpp
#include <iostream>
 
func(int a, int b)
{
 cout<< a-b;
}
 
int raznica()
{
   cout << "Введите A и B";
   cin >>a >> b;
   func(a, b);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
summa.cpp
#include <iostream>
 
func(int a, int b)
{
 cout<< a+b;
}
 
int summa()
{
   cout << "Введите A и B";
   cin >>a >> b;
   func(a, b);
}
Вопрос. Как видите имя функции func(a, b) повторяется. Из за этого будет конфликт. Как сделать чтоб summa.cpp и raznica.cpp не видели друг друга??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 13:31     Обращение файлов cpp #2
Цитата Сообщение от Igorokmen Посмотреть сообщение
Как сделать чтоб summa.cpp и raznica.cpp не видели друг друга??
Из проекта уберите один.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
19.10.2013, 13:32     Обращение файлов cpp #3
Поместить функции в анонимные namespace.
Igorokmen
2 / 2 / 1
Регистрация: 31.01.2013
Сообщений: 96
19.10.2013, 13:34  [ТС]     Обращение файлов cpp #4
нет. это не выход. Единственное что приходит в голову это вложенные функции (не знаю есть ли такие в с++).
Эти файлы не должны знать про друг друга.

Добавлено через 29 секунд
0x10, хмм..
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2013, 13:37     Обращение файлов cpp #5
Если хотите, чтобы func() не была видна в другом файле, объявите её как static.

Добавлено через 1 минуту
Но зачем, вообще, эти извращения? Трудно нормальный код написать?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
19.10.2013, 13:39     Обращение файлов cpp #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Но зачем, вообще, эти извращения? Трудно нормальный код написать?
В примере, конечно, тот еще изврат, но помещать функции и классы, используемые в пределах одного файла, в анонимное пространство имен - нормальная практика.
ct0r
C++/Haskell
 Аватар для ct0r
1549 / 568 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
19.10.2013, 13:52     Обращение файлов cpp #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Если хотите, чтобы func() не была видна в другом файле, объявите её как static.
static для этой цели - это deprecated. Стандарт однозначно советует анонимные пространства имен.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
19.10.2013, 13:53     Обращение файлов cpp #8
Цитата Сообщение от ct0r Посмотреть сообщение
static для этой цели - это deprecated.
Где конкретно? (С++11)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 14:28     Обращение файлов cpp
Еще ссылки по теме:

Обращение к функциям С++, расположенным в других файлах *.cpp C++
Условное подключение cpp файлов C++
C++ Обращение к наследуемому классу с кодом в отдельно cpp

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

Или воспользуйтесь поиском по форуму:
ct0r
C++/Haskell
 Аватар для ct0r
1549 / 568 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
19.10.2013, 14:28     Обращение файлов cpp #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Где конкретно? (С++11)
Забавно, но в С++11 deprecated убрали, правда только из-за обратной совместимости:
Although 7.3.1.1 [namespace.unnamed] states that the use of the static keyword for declaring variables in namespace scope is deprecated because the unnamed namespace provides a superior alternative, it is unlikely that the feature will be removed at any point in the foreseeable future, especially in light of C compatibility concerns. The Committee should consider removing the deprecation.
Тем не менее преимущества использования unnamed namespaces над static по-прежнему остались.
Yandex
Объявления
19.10.2013, 14:28     Обращение файлов cpp
Ответ Создать тему
Опции темы

Текущее время: 21:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru