Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2021, 12:40   #1
Wyncher
Новичок
Джуниор
 
Регистрация: 02.05.2021
Сообщений: 4
По умолчанию Множественное определение

Добрый день,пишу первую курсовую и наткнулся на проблемы с "Раздельной компиляцей". Информацию в интернете видимо плохо искал,но не нашёл от слова совсем.
Имеется 3 файла:
//main.cpp
Код:
#include "methods.cpp" 
void main() { 
setlocale(LC_ALL, "rus"); 
read_config("menu_r"); }
//methods.cpp
Код:
 
#pragma once 
#include <locale.h> 
#include <windows.h> 
#include <fstream> 
#include <conio.h> 
#include"methods.h" 
#define _CRT_SECURE_NO_WARNINGS 
static bool rescue_bool = false; 
void print(string language) { 
rescue_bool = true; 
c = language; 
ifstream file(c); }; 
void read_config(string g) { 
ifstream filed(c); 
SetConsoleOutputCP(886);
SetConsoleCP(886); 
int t, lenght; }; 
//Куски кода внутри функции я удалил ,ибо там идёт работа с переменными ,объявления там нет.
//файл methods.h
Код:
#pragma once 
#include <string> 
#include<iostream> 
using namespace std; 
void read_config(string); 
extern string c, output, outputh,language; 
void print(string);
Слово extern услышал где-то в интернете,не знаю применимо ли оно. Компилятор выдаёт ошибку что все строчные переменные и все функции уже определены в main.obj
Wyncher вне форума Ответить с цитированием
Старый 02.05.2021, 13:15   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

Wyncher, ошибок просто туча

огрское форматирование

инклудить надо methods.h, а не methods.cpp

pragma once в cpp не нужнА

переменные, помеченные extern должны быть определены в каком-нибудь cpp. А ещё лучше объявлять их как inline в одном месте в заголовке. Имена глобальных переменных навроде "c" - это жесть ))

main() должна возвращать int

использовать using namespace std; - очень плохо, особенно в заголовке

исправленный вариант
https://onlinegdb.com/ByD8hl3Pu

Последний раз редактировалось Алексей1153; 02.05.2021 в 13:18.
Алексей1153 вне форума Ответить с цитированием
Старый 02.05.2021, 13:35   #3
Wyncher
Новичок
Джуниор
 
Регистрация: 02.05.2021
Сообщений: 4
По умолчанию

Подредактировал свой код в соответствии с примером. Получил такие ошибки. Также string_view не принадлежит std(я убрал _view и теперь ошибок в том месте нет).
Изображения
Тип файла: jpg Безымянный.jpg (89.0 Кб, 2 просмотров)
Wyncher вне форума Ответить с цитированием
Старый 02.05.2021, 13:40   #4
Wyncher
Новичок
Джуниор
 
Регистрация: 02.05.2021
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Wyncher,
переменные, помеченные extern должны быть определены в каком-нибудь cpp.
Переменные строчные используются как раз таки в print и read_config. Одна функция считывает текст с конфиг файла в строку,потом эта же строка передаётся в print и там печатается текст.
Wyncher вне форума Ответить с цитированием
Старый 02.05.2021, 13:43   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

Wyncher, а зачем они глобальные то? Передавай через аргументы функции

в настройках проекта включи стандарт 17, и "ошибки" уйдут
Алексей1153 вне форума Ответить с цитированием
Старый 02.05.2021, 13:52   #6
Wyncher
Новичок
Джуниор
 
Регистрация: 02.05.2021
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
Wyncher, а зачем они глобальные то? Передавай через аргументы функции.
Так эти переменные используются только в этих функциях и какого-то входного значения не имеют. Ошибки действительно ушли,спасибо!
Wyncher вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественное наследование Алексей201 Visual C++ 4 16.12.2013 04:35
Множественное наследование midiss Visual C++ 2 31.05.2013 12:52
Множественное наследование в C# Mixim C# (си шарп) 15 14.03.2012 19:43
Множественное наследование Crucian Общие вопросы Delphi 1 29.12.2008 14:26