С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
1

Ошибка размера массива, массив элемент структуры

10.04.2023, 22:31. Показов 509. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я не создавал, а конвертировал проект из ms vs 2012 в ms vs 2019
1. я объявил структуру в struct.h, создал экземпляр структуры в другом struct.cpp - его я подключил в проект через solution explorer.
C++
1
2
3
4
5
6
//файл struct.h
#pragma once
#include "define.h"
struct mystruct{
int mass1[msize];
 };
C++
1
2
3
4
//файл struct.cpp
#include "stdafx.h"
#include "struct.h "
mystruct struct1;
Константа msize определена в define.h как define.
Вопрос 1 - появляется - ошибка "константу" не видит структура, хотя это работало в ms vs 2012.
Вопрос 2 - если msize сделать не как #define msize а как const int msize как ее подключить из другого файла, кроме объявления в main файле (файле имени проекта)?
Вопрос 3 - Где есть подробная инструкция для ms vs по раздельной компиляции?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2023, 22:31
Ответы с готовыми решениями:

Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен
Сделайте на языке C

Даны два массива одинакового размера. Создать третий массив такого же размера, каждый элемент которого равен произведени
help!

Даны два массива одинакового размера. Создать третий массив такого же размера, каждый элемент которого равен 11, есл
Даны два массива одинакового размера. Создать третий массив такого же размера, каждый элемент...

Дан массив размера N. После каждого отрицательного элемента массива вставить элемент с нулевым значением. через массив
Дан массив размера N. После каждого отрицательного элемента массива вставить элемент с нулевым...

Дан массив А размера N. Сформировать новый массив В того же размера по следующему правилу: элемент Вк равен сумме элемен
Дан массив А размера N. Сформировать новый массив В того же размера по следующему правилу: элемент...

8
фрилансер
5848 / 5379 / 1103
Регистрация: 11.10.2019
Сообщений: 14,380
11.04.2023, 06:17 2
Цитата Сообщение от korez Посмотреть сообщение
Константа msize определена в define.h как define.
лучше всего переделать дефайн на

C++
1
constexpr size_t msize=1000;//значение не знаю
и подлатать всё, на что заругается компилятор

Добавлено через 2 минуты
а если эта константа нужна только в самой структуре, то вообще достаточно так сделать

C++
1
2
3
4
5
6
7
//файл struct.h
#pragma once
#include "define.h"
struct mystruct{
static constexpr size_t msize=1000;
int mass1[msize];
 };
или даже

C++
1
2
3
4
5
6
//файл struct.h
#pragma once
#include "define.h"
struct mystruct{
int mass1[1000];
 };
1
Вездепух
Эксперт CЭксперт С++
12793 / 6670 / 1795
Регистрация: 18.10.2014
Сообщений: 16,889
11.04.2023, 06:25 3
Цитата Сообщение от korez Посмотреть сообщение
Вопрос 1 - появляется - ошибка "константу" не видит структура, хотя это работало в ms vs 2012.
Вы либо что-то выдумываете, либо недоговариваете. Где в вашем вопросе точные цитаты сообщений об ошибках?

Цитата Сообщение от korez Посмотреть сообщение
Вопрос 2 - если msize сделать не как #define msize а как const int msize как ее подключить из другого файла, кроме объявления в main файле (файле имени проекта)?
Вопрос не ясен. Вы же сами сказали, что константа будет определена в "define.h" - вот уже и подключили. Ничего менять не надо.

Цитата Сообщение от korez Посмотреть сообщение
Вопрос 3 - Где есть подробная инструкция для ms vs по раздельной компиляции?
Нигде. Это слишком обширная тема.
1
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
11.04.2023, 18:48  [ТС] 4
Алексей1153, Мне нужна эта константа только из другого файла. Вообще как использовать константы из других файлов?
TheCalligrapher, Я уже подключил файл define(там я написал в примере) константа все равно не видна хотя это работало в vs2012, ошибка вот " error C2143: syntax error: missing ']' before ';' "
0
Вездепух
Эксперт CЭксперт С++
12793 / 6670 / 1795
Регистрация: 18.10.2014
Сообщений: 16,889
11.04.2023, 19:01 5
Цитата Сообщение от korez Посмотреть сообщение
Я уже подключил файл define(там я написал в примере) константа все равно не видна хотя это работало в vs2012, ошибка вот " error C2143: syntax error: missing ']' before ';' "
Еще раз: приводите реальный код целиком. Ваши рассказы о "магическом" и необъяснимом поведении компилятора бесполезны.
1
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
11.04.2023, 22:21  [ТС] 6
TheCalligrapher, вот весь мой тестовый проект.
Файл названия проекта.
C++
1
2
3
4
5
6
7
8
9
Файл названия проекта.
include "framework.h"
#include "WindowsProject1.h"
 
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,  _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR    lpCmdLine, _In_ int       nCmdShow)
{
    
    return  0;
}
Файл struct.h
C++
1
2
3
4
5
6
#pragma once
#include "define.h"
 
    struct mystruct
{   int mass1[msize];
};
Файл struct.cpp, он подключен через Solution explorer.
C++
1
2
#include "struct.h"
mystruct struct1;
Файл define.h
C++
1
#define msize 100;
Ошибки:
Error C2143 syntax error: missing ']' before ';' WindowsProject1 struct.h 5
Error C2059 syntax error: ']' WindowsProject1 struct.h 5
Error C2238 unexpected token(s) preceding ';' WindowsProject1 struct.h 5
0
Модератор
5104 / 3332 / 535
Регистрация: 01.06.2013
Сообщений: 6,996
Записей в блоге: 9
11.04.2023, 22:28 7
Цитата Сообщение от korez Посмотреть сообщение
#define msize 100;
точку с запятой уберите.
И нужно было сразу это и показать.
1
Вездепух
Эксперт CЭксперт С++
12793 / 6670 / 1795
Регистрация: 18.10.2014
Сообщений: 16,889
12.04.2023, 00:38 8
Лучший ответ Сообщение было отмечено korez как решение

Решение

Цитата Сообщение от korez Посмотреть сообщение
Файл define.h
C++
1
#define msize 100;
Что здесь делает эта точка с запятой? Зачем вы ее сюда вписали? Как это должно было работать?

И зачем вы нам рассказывали сказки о том, что это якобы работало в более ранней версии?

Также: где код с const int?
1
9 / 9 / 1
Регистрация: 22.02.2011
Сообщений: 198
12.04.2023, 20:50  [ТС] 9
TheCalligrapher, да да все заработало - просто не заметил этот момент с ";", а файл define мне пришлось заново создавать он не от vs2012 проекта я просто помню что там я написал define определения, до этого я редко использовал define.
Началось это вообще с того, что я хотел в структуре размер массива определить как константу из другого файла. Вот еще один вопрос как это сделать?
0
12.04.2023, 20:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2023, 20:50
Помогаю со студенческими работами здесь

Дан массив А размера N. Сформировать новый массив B того же размера по следующему правилу: элемент BK равен среднему арифметическому элементов масс
Нужна помощь, ВК - массив В с индексом К

Дан массив размера N и целое число K (1 ≤ K ≤ N). Удалить из массива элемент с порядковым номером K
Дан массив размера N и целое число K (1 ≤ K ≤ N). Удалить из массива элемент с порядковым номером...

Дан массив размера N. Вывести предпоследний отрицательный элемент массива и его номер
Дан массив размера N. Вывести предпоследний отрицательный элемент массива и его номер.

Сгенерировать двумерный числовой массив размера n x n. Найти наименьший элемент в первой строке массива
Сгенерировать двумерный числовой массив размера n x n. Найти наименьший элемент в первой строке...

Задан вещественный массив размера N. Создать целочисленный массив такого же размера, в котором будут записаны индексы исходного массива в порядке во
Помогите с задачей: Задан вещественный массив размера N. Создать целочисленный массив такого же...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru