|
0 / 0 / 0 Регистрация: 16.03.2018 Сообщений: 52 |
|
|
1 |
|
|
05.04.2018, 16:22. Показов 5054. Ответов 5
Ругается на эту строчку: Client.Connect(ip ^, port); , красным подчёркнута запятая после ip ^
__________________ 0 |
|
OwenGlendower Администратор
15226 / 12265 / 4902 Регистрация: 17.03.2014 Сообщений: 24,867 Записей в блоге: 1 |
||||
|
05.04.2018, 18:01 |
2 |
|||
|
KirillConsolelr,
0 |
|
0 / 0 / 0 Регистрация: 16.03.2018 Сообщений: 52 |
|
|
05.04.2018, 18:36 [ТС] |
3 |
|
Client->Connect(ip, port) Тоже самое, только красным подчёркнуто -> 0 |
|
Hitoku 1754 / 1346 / 1407 Регистрация: 28.10.2016 Сообщений: 4,267 |
||||
|
06.04.2018, 12:00 |
4 |
|||
|
А так?
0 |
|
0 / 0 / 0 Регистрация: 16.03.2018 Сообщений: 52 |
|
|
06.04.2018, 12:24 [ТС] |
5 |
|
Client::Connect(ip, port) Теперь несколько ошибок, и красным светится Client 0 |
|
Администратор
15226 / 12265 / 4902 Регистрация: 17.03.2014 Сообщений: 24,867 Записей в блоге: 1 |
|
|
06.04.2018, 12:53 |
6 |
|
KirillConsolelr, покажи весь код и выложи полные тексты ошибок. 0 |
- Remove From My Forums
-
Общие обсуждения
-
Почему не работает CUDA может кто помочь с установкой?
Скачал CUDA Toolkit 10.0 x86_64 и установил
Создаю проект с помощью Visual Studio 2017 у меня сразу же появляется шаблон и 29 ошибок, первые из них он не понимает библиотеки #include «cuda_runtime.h» и #include
«device_launch_parameters.h»При нажатии скомпилировать появляется 30-тая:
Серьезность Код
Описание Проект
Файл Строка
Состояние подавления
Ошибка The CUDA Toolkit v10.0 directory » does not exist. Please verify the CUDA Toolkit is installed properly or define the CudaToolkitDir property to resolve this error.
matrix_myltiply C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDEVCVCTargetsBuildCustomizationsCUDA 10.0.targets
536Что я мог пропустить или забыть???
Видеокарта GTX 950M
NET Framework 4.0
- Изменено
8 ноября 2018 г. 17:06
- Изменен тип
Maksim MarinovMicrosoft contingent staff, Moderator
3 декабря 2018 г. 12:28
тема неактивна
- Изменено
- Forum
- Beginners
- error E0029 Expected an expression
error E0029 Expected an expression
I keep getting an error message that’s saying expected an expression, or error code E0029. I’m new at all this programming stuff, so any advice would be helpful. Here’s what i have been working on so far:
|
|
You seem to have your main() function defined twice — once at line 15, and once at line 52.
Also, at lines 18 and 55,
visitors[12][9]
is past the end of the array. Remember, in C and C++, array indices begin at 0, so
visitors[11][8]
is the final element of the array.
Last edited on
Lines 49 — 57 are a duplication of
main
, delete them.
Line 17 creates an uninitialized 2D array, any values contained are garbage values.
Line 18 you are trying to assign an out of bounds value in your 2D array. Arrays are indexed starting at 0 (zero), the end-most element is at [11][8].
Line 19 expects a 2D array as the first parameter.
displayChart(visitors, Visitors);
The
displayChart
function is creating 12 local 1D arrays. Are you wanting to use the passed 2D array?
The main issue with your code is how it deals with arrays.
I suggest starting small with a simple program, and then building off it.
This declares a 12×9 2D array (for a total of 108 elements).
|
|
To pass this to a function, just pass the name.
|
|
On the function side, 2D array syntax is kind of weird, but just note that you need to specify the size of the second dimension.
So something like:
|
|
|
|
This is wrong. There is no need for your ‘Visitors’ variable. But also, when you declare an array of size [12][9], its actual valid indices you can access range from visitors[0 … 11][0 … 8] (the size of each dimension — 1).
By doing int Visitors = visitors[12][9]; you would be going out of bounds of your array.
MikeyBoy I think you typo’d on your last sentence.
Last edited on
MikeyBoy I think you typo’d on your last sentence.
D’oh… thanks! Fixed.
Thank you Mikey that makes sense now. Furry guy, im trying to have the functions set up to where the program can pull the data from the 2d array yes. Thanks Ganado that makes sense, i guess i was trying to declare the first parameter array with the second parameter in my function, to which i now realize i can’t do that lol
Im writing this program as an assignment, i have tried everyones advice but im still getting nowhere? Im still getting an error message with the expected an expression displaychart(visitors[][9], Visitors) The first parameter with the array is where im getting the error. It keeps saying to add an expression in the brackets of the Row of the array? But when i put something there, it then says that its incompatible with parameter type? Anyways after working on this again im still coming up with nothing. I’m trying to get this program to take values from a user, and then have those values transferred from functions back to main?
Post your current code so that we can see exactly what you’re got now.
Look at your function call:
displaychart(visitors[][9], Visitors)
What is visitors[][9] supposed to mean here? What did you intend that empty array index [] to indicate?
Also, note that that second array index, [9], is still one higher than any valid array index, as several of us have already explained.
Also, the name of your function is displayChart, not displaychart.
Edit: Looking at the definition of displayChart, that first argument is supposed to be the array as a whole. So you should just be using the name of the array as the argument:
displayChart(visitors, Visitors)
And it seems you haven’t addressed what Ganado said about the Visitors argument. What is it supposed to be?
Last edited on
Topic archived. No new replies allowed.
Это программный код C ++ для отображения значений массивов array1 и array2, но я получаю ошибку времени компиляции как «Требуется постоянное выражение». Пожалуйста помоги
void display(const int const1 = 5)
{
const int const2 = 5;
int array1[const1];
int array2[const2];
for(int i = 1 ; i < 5 ; i++)
{
array1[i] = i;
array2[i] = i * 10;
std::cout << array1[i] << std::endl;
}
}
void main()
{
display(5);
}
2
Решение
В C ++ const не всегда constexpr, В те дни, constexpr не существовало, поэтому единственный способ иметь постоянную времени компиляции состоял в том, чтобы использовать const с буквальным, или использовать enumпотому что оба из них легко для компилятора, чтобы проверить значение.
Однако в C ++ 11 мы добавили constexpr, который гарантирует, что constexpr переменная имеет значение, доступное во время компиляции, и заявляет, что constexpr Функция может быть оценена во время компиляции, если все аргументы constexpr тоже.
В своем коде вы можете написать свою переменную const2 как это:
void display(const int const1=5)
{
constexpr int const2 = 5;
// ...
}
Теперь ваш код гораздо более выразителен в том, что вы делаете. вместо того, чтобы полагать, что const может быть доступен во время компиляции, вы говорите: «эта переменная имеет значение, известное во время компиляции, вот значение».
Однако, если вы попытаетесь изменить const1, вы получите ошибку. Параметры, даже со значением по умолчанию всегда в качестве значения, известного во время выполнения. Если значение известно только во время выполнения, его нельзя использовать в параметрах шаблона или размере массива.
Если вы хотите, чтобы ваша функция могла receive Значение const1 как константное выражение, откуда вы можете получить его как параметр шаблона, так как параметры шаблона всегда известны во время компиляции.
template<int const1 = 5>
void display()
{
constexpr int const2 = 5;
int array1[const1];
int array2[const2];
}
Вам придется вызывать вашу функцию так:
// const1 is 5
display();
// const1 is 10
display<10>();
Если вы хотите узнать больше о шаблонах, проверьте Шаблоны функций, или это руководство
1
Другие решения
Других решений пока нет …
Имеется приложение на C#, которое должно передать в dll массив структур. Результат обработки массива функция dll должна возвратить в виде переменной int. Поиск показал, что направление работы — это использование технологии PInvoke (см. https://docs.microsoft.com/ru-ru/cpp/dotnet/calling-native-functions-from-managed-code?view=msvc-170). C этим я еще буду разбираться. Сейчас столкнулся с проблемой корректного написания кода самой dll. Все примеры, что мне удалось найти, предлагают такой синтаксис записи: return a, где a — некоторая переменная. Visual Studio же предлагает автоматически вариант кода, который пока что распознается компилятором как ошибочный. Поиск по коду ошибки (E0029 — «Требуется выражение») ничего толком не дал. Вопрос — как корректно задать последний оператор функции, возвращающий переменную?
Привожу код библиотеки.
Точка входа:
// dllmain.cpp : Определяет точку входа для приложения DLL.
#include "pch.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Заголовочный файл:
#pragma once
#ifdef PACKINGDLL_EXPORTS
#define PACKINGDLL_API __declspec(dllexport)
#else
#define PACKINGTDLL_API __declspec(dllimport)
#endif
typedef struct _PACKAGINGDATA
{
int Lx;
int Ly;
int Lz;
double dbl_Mass;
bool Up;
} PACKAGINGDATA;
extern "C" PACKINGDLL_API int analysis(int int_Number, PACKAGINGDATA * sPD_Packaging_data);
Определение функции:
PACKINGDLL_API int analysis(int int_Number, PACKAGINGDATA* sPD_Packaging_data)
{
return PACKINGDLL_API int();
}
я использую перечисление, определенное в модуле класса в Excel VBA. Это работает нормально, но я начал получать ошибку компиляции при каждом сравнении переменных перечисления:
в классе CExample:
Enum MyEnum
Foo
Bar
End Enum
в другом месте:
If someValue = myEnum.Foo Then
текст .Foo будет выделено, и появится сообщение» ошибка компиляции: требуется постоянное выражение».
поиск в Google предполагает, что это может произойти случайным образом, и исправления, такие как перезапуск среды IDE или добавление пробела после объявления перечисления может заставить ее снова начать работать.
- http://www.tek-tips.com/viewthread.cfm?qid=1355882
- http://www.vbforums.com/showthread.php?405564-RESOLVED-Constant-Expression-Required-Error-when-checking-Enum
это действительно известная ошибка в VBA? Есть ли что-нибудь, что я могу сделать, чтобы избежать этого, или надежно заставить VBA работать снова, если это произойдет культур вверх?
в моем случае закрытие и повторное открытие Excel не помогло. Извините, пока я перезагружаю компьютер.
обновление после перезагрузки:
проблема сохранялась после перезагрузки моей машины, что удивительно. Я попытался добавить Public перед определением перечисления (они должны быть public по умолчанию но я подумал, что попробую), и ошибка исчезла. Я удалил Public ключевое слово (так что мы вернулись к моему оригиналу код), и он по-прежнему компилируется и работает нормально.
похоже, что это случайная ошибка в VBA. Мне было бы интересно узнать, часто ли опытные разработчики находят это — вы бы посоветовали не использовать перечисления? Или он появляется один раз в голубой луне, и мне просто не повезло?
обновление после 6 недель дальнейшего развития:
проблема не повторялась в течение остальной части моего времени, разрабатывая этот проект, поэтому похоже, что это редкая проблема.
3 ответов
Как отмечено в вопросе, я избавился от ошибки, отредактировав и сохранив определение перечисления, а затем отменив редактирование и сохранение снова. Недавно проделав еще несколько работ над проектом, я нашел другую, но похожую проблему — одна строка кода даст ошибку «несоответствие типов», где не было несоответствия типов и где одна и та же функция, неизменная, работала нормально с теми же входами.
некоторые из прерывистых ошибок, которые я вижу, могут быть вызваны накоплением кода артефакты в файле Excel-после некоторого чтения я обнаружил, что код VBA компилируется и сохраняется в файл. Нет опции» очистить «или» перестроить все » — VBA пытается решить для себя, какие инкрементные изменения необходимы. Это может привести ко всем видам нечетного поведения во время выполнения в проектах, где вы внесли много изменений в код. Вероятно, это причина ошибок перечисления, которые я обнаружил во время начальной разработки этой книги. Раздел»что значит декомпилировать и Компактный в VBA» в этой статье дан хороший обзор.
большинство упоминаний этой проблемы рекомендуют использовать VBA CodeCleaner:http://www.appspro.com/Utilities/CodeCleaner.htm. Чип Пирсон, известный и уважаемый эксперт VBA, говорит: «Я очень сильно рекомендую эту надстройку». Я удивлен, что не сталкивался с этим раньше!
Кажется, ошибка.
скопируйте код того же модуля в новый и перекомпилируйте. Для некоторых это все решает.
существует аналогичное исправление, которое включает редактирование и отмену строки определения перечисления.
подумайте о переключении на числовые константы, если это частая проблема.
старый вопрос, но только что испытал это. Удален Public definer на перечислении, и он скомпилирован просто отлично. Не перезапускал IDE. Удивительно, что это все еще здесь.
- Forum
- Beginners
- error E0029 Expected an expression
error E0029 Expected an expression
I keep getting an error message that’s saying expected an expression, or error code E0029. I’m new at all this programming stuff, so any advice would be helpful. Here’s what i have been working on so far:
|
|
You seem to have your main() function defined twice — once at line 15, and once at line 52.
Also, at lines 18 and 55,
visitors[12][9]
is past the end of the array. Remember, in C and C++, array indices begin at 0, so
visitors[11][8]
is the final element of the array.
Last edited on
Lines 49 — 57 are a duplication of
main
, delete them.
Line 17 creates an uninitialized 2D array, any values contained are garbage values.
Line 18 you are trying to assign an out of bounds value in your 2D array. Arrays are indexed starting at 0 (zero), the end-most element is at [11][8].
Line 19 expects a 2D array as the first parameter.
displayChart(visitors, Visitors);
The
displayChart
function is creating 12 local 1D arrays. Are you wanting to use the passed 2D array?
The main issue with your code is how it deals with arrays.
I suggest starting small with a simple program, and then building off it.
This declares a 12×9 2D array (for a total of 108 elements).
|
|
To pass this to a function, just pass the name.
|
|
On the function side, 2D array syntax is kind of weird, but just note that you need to specify the size of the second dimension.
So something like:
|
|
|
|
This is wrong. There is no need for your ‘Visitors’ variable. But also, when you declare an array of size [12][9], its actual valid indices you can access range from visitors[0 … 11][0 … 8] (the size of each dimension — 1).
By doing int Visitors = visitors[12][9]; you would be going out of bounds of your array.
MikeyBoy I think you typo’d on your last sentence.
Last edited on
MikeyBoy I think you typo’d on your last sentence.
D’oh… thanks! Fixed.
Thank you Mikey that makes sense now. Furry guy, im trying to have the functions set up to where the program can pull the data from the 2d array yes. Thanks Ganado that makes sense, i guess i was trying to declare the first parameter array with the second parameter in my function, to which i now realize i can’t do that lol
Im writing this program as an assignment, i have tried everyones advice but im still getting nowhere? Im still getting an error message with the expected an expression displaychart(visitors[][9], Visitors) The first parameter with the array is where im getting the error. It keeps saying to add an expression in the brackets of the Row of the array? But when i put something there, it then says that its incompatible with parameter type? Anyways after working on this again im still coming up with nothing. I’m trying to get this program to take values from a user, and then have those values transferred from functions back to main?
Post your current code so that we can see exactly what you’re got now.
Look at your function call:
displaychart(visitors[][9], Visitors)
What is visitors[][9] supposed to mean here? What did you intend that empty array index [] to indicate?
Also, note that that second array index, [9], is still one higher than any valid array index, as several of us have already explained.
Also, the name of your function is displayChart, not displaychart.
Edit: Looking at the definition of displayChart, that first argument is supposed to be the array as a whole. So you should just be using the name of the array as the argument:
displayChart(visitors, Visitors)
And it seems you haven’t addressed what Ganado said about the Visitors argument. What is it supposed to be?
Last edited on
Topic archived. No new replies allowed.
- Remove From My Forums
-
Общие обсуждения
-
Почему не работает CUDA может кто помочь с установкой?
Скачал CUDA Toolkit 10.0 x86_64 и установил
Создаю проект с помощью Visual Studio 2017 у меня сразу же появляется шаблон и 29 ошибок, первые из них он не понимает библиотеки #include «cuda_runtime.h» и #include
«device_launch_parameters.h»При нажатии скомпилировать появляется 30-тая:
Серьезность Код
Описание Проект
Файл Строка
Состояние подавления
Ошибка The CUDA Toolkit v10.0 directory » does not exist. Please verify the CUDA Toolkit is installed properly or define the CudaToolkitDir property to resolve this error.
matrix_myltiply C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDEVCVCTargetsBuildCustomizationsCUDA 10.0.targets
536Что я мог пропустить или забыть???
Видеокарта GTX 950M
NET Framework 4.0
-
Изменено
8 ноября 2018 г. 17:06
-
Изменен тип
Maksim MarinovMicrosoft contingent staff, Moderator
3 декабря 2018 г. 12:28
тема неактивна
-
Изменено
|
Mukudori 0 / 0 / 0 Регистрация: 16.08.2019 Сообщений: 6 |
||||
|
1 |
||||
Инициализация класса через многоточие16.08.2019, 19:54. Показов 4203. Ответов 11 Метки нет (Все метки)
Пытаюсь воспользоваться библиотекой https://github.com/gosha20777/keras2cpp Но не могу ее собрать. Писал автору https://github.com/gosha20777/keras2cpp/issues/16 но он отвечать не торопится. Может тут мне чего подскажут. Проблема заключается в том, что когда инициализируется класс Tensor через initializer list, то компилятор выдает на это ошибку C2440. Кроме того, в шаблоне самого класса, редактор подчеркивает красным троеточие в 6 строке, с ошибкой E0029 (требуется выражение). Подозреваю что из этого и выходит ошибка C2440.
0 |
|
Неэпический 17819 / 10592 / 2044 Регистрация: 27.09.2012 Сообщений: 26,636 Записей в блоге: 1 |
|
|
16.08.2019, 19:57 |
2 |
|
Mukudori, студия какая? C++17 включен?
0 |
|
6577 / 4562 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
|
|
16.08.2019, 20:23 |
3 |
|
Может тут мне чего подскажут. Может ты покажешь весь код?
0 |
|
0 / 0 / 0 Регистрация: 16.08.2019 Сообщений: 6 |
|
|
16.08.2019, 20:39 [ТС] |
4 |
|
Croessmah, студия 17. Если я не ошибаюсь c++17 там стоит по умолчанию oleg-m1973, весь код лежит Здесь. Я просто подключаю model.h, ничего оттуда не использую, и проект валится на этапе сборки по причине, которую я указал выше
0 |
|
6577 / 4562 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
|
|
16.08.2019, 20:45 |
5 |
|
роблема заключается в том, что когда инициализируется класс Tensor через initializer list, то компилятор выдает на это ошибку C2440. initializer_list вроде так не работает, там нужен явный конструктор Tensor(std::initializer_list<size_t> …….
0 |
|
Mukudori 0 / 0 / 0 Регистрация: 16.08.2019 Сообщений: 6 |
||||
|
16.08.2019, 20:55 [ТС] |
6 |
|||
|
Получается в 6 строчке так должно быть?
0 |
|
oleg-m1973 6577 / 4562 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
||||
|
16.08.2019, 21:00 |
7 |
|||
|
Получается в 6 строчке так должно быть? Нет, нужен второй конструктор
Добавлено через 1 минуту
1 |
|
0 / 0 / 0 Регистрация: 16.08.2019 Сообщений: 6 |
|
|
16.08.2019, 21:08 [ТС] |
8 |
|
А как тогда быть с многоточием, оно по прежнему будет считаться синтаксической ошибкой? Добавлено через 4 минуты
А зачем его вообще инициализировать через initializer_list? Не могу знать, такова задумка автора библиотеки. Я просто не хочу все ломать
0 |
|
oleg-m1973 6577 / 4562 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
||||
|
16.08.2019, 21:51 |
9 |
|||
|
Решение
А как тогда быть с многоточием, оно по прежнему будет считаться синтаксической ошибкой? Это не в многоточии ошибка, а когда ты передаёшь в конструктор неправильные аргументы Добавлено через 5 минут
Добавлено через 31 минуту
1 |
|
Mukudori 0 / 0 / 0 Регистрация: 16.08.2019 Сообщений: 6 |
||||
|
18.08.2019, 16:51 [ТС] |
10 |
|||
|
Я удалил все темплейты, переписал инициализацию и ввод параметров через vector<size_t>, теперь на переписанные фунции компилятор выкидывает ошибку LNK4006
0 |
|
0 / 0 / 0 Регистрация: 16.08.2019 Сообщений: 6 |
|
|
19.08.2019, 19:42 [ТС] |
11 |
|
Пофиксил. Нужно было прописать тело функций внутри класса. Пока проект собирается без ошибок, но я еще не юзал из библиотеки ни одной функции. Добавлено через 1 час 11 минут
0 |
|
oleg-m1973 6577 / 4562 / 1843 Регистрация: 07.05.2019 Сообщений: 13,726 |
||||
|
19.08.2019, 21:05 |
12 |
|||
|
Я удалил все темплейты, переписал инициализацию и ввод параметров через vector<size_t>, А как у тебя вообще вызывается конструктор для этого Tensor, и зачем? Из того, что ты показал, лучше сделать
Добавлено через 1 минуту
0 |
Имеется приложение на C#, которое должно передать в dll массив структур. Результат обработки массива функция dll должна возвратить в виде переменной int. Поиск показал, что направление работы — это использование технологии PInvoke (см. https://docs.microsoft.com/ru-ru/cpp/dotnet/calling-native-functions-from-managed-code?view=msvc-170). C этим я еще буду разбираться. Сейчас столкнулся с проблемой корректного написания кода самой dll. Все примеры, что мне удалось найти, предлагают такой синтаксис записи: return a, где a — некоторая переменная. Visual Studio же предлагает автоматически вариант кода, который пока что распознается компилятором как ошибочный. Поиск по коду ошибки (E0029 — «Требуется выражение») ничего толком не дал. Вопрос — как корректно задать последний оператор функции, возвращающий переменную?
Привожу код библиотеки.
Точка входа:
// dllmain.cpp : Определяет точку входа для приложения DLL.
#include "pch.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Заголовочный файл:
#pragma once
#ifdef PACKINGDLL_EXPORTS
#define PACKINGDLL_API __declspec(dllexport)
#else
#define PACKINGTDLL_API __declspec(dllimport)
#endif
typedef struct _PACKAGINGDATA
{
int Lx;
int Ly;
int Lz;
double dbl_Mass;
bool Up;
} PACKAGINGDATA;
extern "C" PACKINGDLL_API int analysis(int int_Number, PACKAGINGDATA * sPD_Packaging_data);
Определение функции:
PACKINGDLL_API int analysis(int int_Number, PACKAGINGDATA* sPD_Packaging_data)
{
return PACKINGDLL_API int();
}


Сообщение было отмечено Mukudori как решение