Error c2059 синтаксическая ошибка
error C2059: syntax error : ‘namespace’
jarv 13 Newbie Poster
can someone please help me here?!
- 5 Contributors
- forum18 Replies
- 3,293 Views
- 1 Day Discussion Span
- commentLatest Post 12 Years Ago by jarv
jarv 13
i am using Vista Ultimate, does this matter?
GreenDay2001
Whats the code, so that we could see whats happening. Here’s an ‘ data-template=’
Ancient Dragon 5,243
i am using Vista Ultimate, does this matter?
No — that error has nothing at all to do with the operating system. Without seeing your code I guess that you left out a semicolon somewhere.
jarv 13
jarv 13
and my main form code:
Ancient Dragon 5,243
without attempting to compile the code you posted there is probably at least one semicolon missing at the last brace in the header file.
jarv 13
can anyone help?
Ancient Dragon 5,243
Ok I loaded your code in a new project with VC++ 2005 Express and found that your Form1.h is missing some braces somewhere. You need to start at the top of the file and count the number of open/close brace pairs and insert the missing one(s). Put your cursor on the closing brace at the bottom of the file then press Ctrl + [ keys and the cursor will jump to the matching open brace.
After adding two closing braces at the bottom of the file (probably in the wrong place I might add) the compiler now spits out a lot of other errors in Form1.h. My suggestion is to begain all over again, create a new CLR Windows project and gradually add the code you posted here a little bit at a time, compile to get clean compile, then add some more.
Salem 5,138
The same goes for testing, when you’ve finished a function, then try running the code to make sure it’s doing what you want.
Never code beyond your ability to deal with the consequence of the compiler spitting it straight back at you.
(*) or however many you feel confident about writing without errors.
jarv 13
can someone please help?!
I am very new to this!
Narue 5,707
>can someone please help?!
Two very qualified people have already given you good advice. Are you ignoring their suggestions and hoping that someone does all of the work for you? If not, explain what you’ve done to troubleshoot and how it didn’t work.
jarv 13
1>c:usersjohndocumentsvisual studio 2005projectsspeedgamespeedgameForm1.h(23) : error C2143: syntax error : missing ‘,’ before ‘>’
so i think it’s line 23 where it goes ><
jarv 13
>can someone please help?!
Two very qualified people have already given you good advice. Are you ignoring their suggestions and hoping that someone does all of the work for you? If not, explain what you’ve done to troubleshoot and how it didn’t work.
I have gone through the < and the >and looked for where to put a ;
i wrote this code from a book and i am double checking it!
Salem 5,138
Like I said, the problem was how you approached the problem from the beginning.
This is your post.
«It’s the 4th down and 50 yards to go, with 20 seconds remaining on the clock, and you need 7 points for the win».
In essence, a «hail mary» pass into the end zone in the hopes that you’ll strike lucky.
IMO, you need to create a new project and build up slowly this time, copy/pasting small sections of this project to it, along with lots of compile and test as you go.
error c2059 синтаксическая ошибка
Я просмотрел другие посты и, честно говоря, я до сих пор не уверен, что является причиной проблемы. Я программирую в Visual Studio и
У меня есть следующий код: (это главный C)
Он использует следующий код cpp:
С соответствующим заголовочным файлом:
Но я продолжаю получать следующие ошибки:
Пожалуйста, могу ли я получить некоторую помощь, я смотрел на другие сообщения, касающиеся c2059, но до сих пор не получается
Решение
Измени свой exec декларация об использовании EXTERNC макрос, который вы постарались определить.
Другие решения
Я столкнулся с этой ошибкой компиляции при добавлении enum к проекту. Оказалось, что одно из значений в enum определение имело конфликт имени с препроцессором #define ,
enum выглядело примерно так:
А потом в другом месте был #define со следующим:
Затем в .cpp где-то еще в проекте оба заголовка были включены:
Поскольку имя kUnknown уже #define когда компилятор пришел к kUnknown символ в моем enum , он сгенерировал ошибку, так как символ уже использовался для определения строки. Это вызвало загадку syntax error: ‘string’ что я видел.
Это было невероятно запутанным, поскольку в enum определение и компилируется просто отлично.
Это не помогло, что это было в очень большом проекте C ++, и что #define был транзитивно включен в совершенно отдельный блок компиляции и был написан кем-то 15 лет назад.
Очевидно, что правильная вещь отсюда переименовать это ужасное #define к чему-то менее распространенному, чем kUnknown , но до тех пор, просто переименовав enum значение для чего-то другого работает как фикс, например:
В любом случае, надеюсь, этот ответ будет полезен для кого-то еще, поскольку причина этой ошибки поставила меня в тупик на добрых полтора дня.
extern «C» используется для указания компилятору сделать его грамматикой языка Си, но вы имеете в виду объявить внешнюю функцию exec. Вы просто объединяетесь с этим. поэтому переписайте ваш код следующим образом в arp_piping.h:
и затем префикс extern «C» в файле cpp.
если вы хотите компилировать их с грамматикой C, просто установите в cpp вызов функции exec, поэтому напишите так:
Ошибки:
error C2059: синтаксическая ошибка: namespace
error C2334: непредвиденные лексемы перед « ;
>
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) listBox2->Items->Clear();
this->listBox2->Items->Add(«While «);
int n = 2, k = 1;
while(k listBox2->AppendText(n + » «);
n *=2;
k++;
>
>
I have looked at other posts and to be honest I am still not sure what is causing the problem. I am programming in Visual Studio and
I have the following code: (this is a C main)
It uses the following cpp code:
With the matching header file:
But I keep on getting the following errors:
Please can I get some help, I have looked at other posts regarding the c2059 but am still getting nowhere
3 Answers 3
Change your exec declaration to use the EXTERNC macro you have taken pains to define.
I ran into this compilation error when adding an enum to a project. It turned out that one of the values in the enum definition had a name clash with a preprocessor #define .
The enum looked something like the following:
And then elsewhere there was a #define with the following:
Then, in a .cpp somewhere else in the project, both of these headers were included:
Since the name kUnknown was already #define ‘d, when the compiler came to the kUnknown symbol in my enum , it generated an error since the symbol was already used to define a string. This caused the cryptic syntax error: ‘string’ that I saw.
This was incredibly confusing since everything appears to be correct in the enum definition and compiles just fine on it’s own.
It didn’t help that this was in a very large C++ project, and that the #define was being transitively included in a completely separate compilation unit and was written by someone 15 years ago.
Obviously, the right thing to do from here is rename that terrible #define to something less common than kUnknown , but until then, just renaming the enum value to something else works as a fix, e.g.:
Anyway, hopefully this answer is helpful for someone else, since the cause of this error stumped me for a good day and a half.
Как разобраться в синтаксической ошибке?
#include
#include
//#include
//#include
//#include
//#include
//#include
//#include
//#include
// Add DEFINES Here
// Add Function prototypes Here
void RtWriteLPTPort ( USHORT PortAddr ,BYTE Value )
<
_asm <
mov DX, PortAddr
mov AL, Value
out DX, AL
>
>
bool RtBIOSDetectPCI ( void )
<
_asm <
mov AX, B101h
int 1Ah
jc & nopcibios
mov AX, 1
ret
& nopcibios :
xor AX, AX
ret
>
Первую функцию хавает без проблем, а на второй уперся рогом.
Приложение компилю в RTSSRelease Mode.
Ошибки:
USB.h(35) : error C2061: syntax error : identifier ‘RtBIOSDetectPCI’
USB.h(35) : error C2059: syntax error : ‘;’
USB.h(35) : error C2059: syntax error : ‘type’
USB.h(39) : error C2059: syntax error : ‘bad suffix on number’
Пол дня уже эта тварь отняла, помогите.
35 ответов
Странно всё это, но ошибок стало меньше.
Сижу тут из паскалевского ассемблера переделываю в сишный, вот исходник из книги:
Оставшиеся ошибки:
1,2 те же.
3 (34) : error C2059: syntax error : ‘)’
Жалко к делфи нету этой примочки RTX, с удовольствием пересел бы на него.
Короче вот такой пока код:
bool RtBIOSDetectPCI ( void )
<
_asm <
Mov AX, 0xB101
Int 0x1A
Jc & nopcibios
Mov AX, 0x1
Ret
Не пойму причём тут название функции? Чем принципиально первая функция от второй отличается?
С ассемблерным кодом разобрались, спасибо вам Alm3n.
А вот ошибки в сишном коде не могу увидеть.
В книге функция объявлена вот так:
Function DetectPCIBios: Boolean; assembler;
Может вместо ассемблер нужно чтото написать? Я написал register(т.к assembler он не хавает), но тогда появляются следующие ошибки:
(34) : error C2054: expected ‘(‘ to follow ‘bool’
(34) : error C2085: ‘RtBIOSDetectPCI’ : not in formal parameter list
Проблем с переводом нету, спасибо.
Проблема в том что я хочу расширить функционал RTX API, написать функции на ассемблере и оформить их как отдельный (по понятиям делфи) модуль. Реализовать это хочу самым простым способом, без всяких динамических библиотек и прочего мутора.
В общем нужно чтоб я мог писать функции в отдельном файле, а в основном .c файле мог их спокойно вызывать.
Проблем с переводом нету, спасибо.
Проблема в том что я хочу расширить функционал RTX API, написать функции на ассемблере и оформить их как отдельный (по понятиям делфи) модуль. Реализовать это хочу самым простым способом, без всяких динамических библиотек и прочего мутора.
В общем нужно чтоб я мог писать функции в отдельном файле, а в основном .c файле мог их спокойно вызывать.
Если язык Си, то прототипы функций не обязательны, можно код сразу писать в .с файлах, подключаемых к проекту.
А можно какой нибудь проктический пример?
У меня сейчас есть USB.h и USB.c(главный фаил в котором всё происходит). Например я создам фаил myrtapi.c, в котором как я понимаю не должно быть таких проблем и можно будет написать несколько функций.
Как его потом подключить к USB.c?
Насчёт си или с++ походу я ошибся я выбирал при создании проекта тип проекта визуал с++, а он в итоге .с файлы ляпает
На данный момент сделал следующее:
1) создал фаил myrtapi.c. Выбрал меню проект, в нём создать новый item(yне знаю перевода).
2) Написал в нем функции:
Это всё содержимое файла.
bool RtBIOSDetectPCI ( void )
<
_asm <
Mov AX, 0xB101
Int 0x1A
Jc & nopcibios
Mov AX, 0x1
Ret
3) Попытался скомпилить, после чего был расстрелен компилятором.
Фаил myrtapi.c отображается в структуре проекта, но от этого не легче.
Вот такие теперь ошибки:
.myrtapi.c(13) : error C2146: syntax error : missing ‘)’ before identifier ‘PortAddr’
.myrtapi.c(13) : error C2061: syntax error : identifier ‘PortAddr’
.myrtapi.c(13) : error C2059: syntax error : ‘;’
.myrtapi.c(13) : error C2059: syntax error : ‘,’
.myrtapi.c(13) : error C2059: syntax error : ‘)’
.myrtapi.c(25) : error C2061: syntax error : identifier ‘RtBIOSDetectPCI’
.myrtapi.c(25) : error C2059: syntax error : ‘;’
.myrtapi.c(25) : error C2059: syntax error : ‘type’
Может, человек драйвер пишет. Отчего не будет-то?
PS: Аффтар как всегда решает не те задачи.
Буду теперь знать, что не работает под Windows это прерывание.
В смысле как это не будет? Приложение RTSS. Устанавливает свой HAL который начинает рулить виндой.
Например запись в LPT порт под виндой не идёт, пишет что не хватает привелегий для такой операции, а под этой хренью всё пишется без напрягов
Вот этот код например:
Штука рульная. Например я написал записывать последовательно в порт значения 0 и 255 на протяжении минуты, и вижу как мигает светодиод подключенный к порту.
Так же написал на делфи завешивалку системы с максимальным для винды приоритетом. Так вот когда я запускаю завешивалку винда виснет намертво(не двигается мышка, не срабатывает капс лок на клаве), а это приложение работает дальше как ни в чём не бывало. При чём завешивалка именно загружает проц на сто пудов.
Осталось только с си разобраться, пока он не поддаётся моей логике.
Вы бы если это для вас не очень обременительно прокоментировали что я не так сделал.
Насчёт int 0x1a ‘Это из книги, там автор предупреждает что под серией операционок NT работать не будет, так же предупреждали и про код для записи в порт.
Что значит «предупреждает»? То есть, вы знали, что работать не будет, но всё равно пишите?
Да всё равно пишу, по тому что приложение в итоге выходит не для виндовс(.ехе), а для подсистемы RTSS(.rtss).
Если смотреть с точки зрения виндовых колец защиты, то получается что это -1-е кольцо.
Я даже скажу больше по уверениям разработчиков этой хрени приложение продолжит работать как ни в чём не бывало если у винды вылезет так называемый экран смерти.
У этого приложения будет свой, зеленый экран смерти(в прямом смысле зелёный). Если чё нибудь не так закодю возможно его увижу, винде я так понял тоже будет в этот момент шабаш.
Error c2059 синтаксическая ошибка
Профессионал
Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630
Репутация: 29
Установил впервые в жизни Microsoft Visual Studio 10 express.
Пытаюсь скомпилировать простенькое приложение, ничего не выходит, постоянно ругается на свой же файл winnt.h
Получаю следующие ошибки
Активный участник
Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182
Репутация: 5
Я сталкивался в двух проявлениях:
1. В списке инклюдов windows.h и excpt.h должны стоять сразу перед winnt.h
2. Поместить $(_ARCHFAM_) или $(ARCHFAM) в препроцессор definition, или добавить /D «_X86_» или /D «X86» в коммандную строку билда
Профессионал
Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630
Репутация: 29
winnt.h подключается в библиотеке nppapi, при этом не на прямую, а через windef.h. Сами исходники я менять не буду. Попробую инклюдники, что ты написал, в main-файл добавить, может поможет.
По второму пункту не очень понял что сделать нужно. Я до этого msvc не использовал, и сейчас копаться в его настройках как то не хочется. Я генерирую файл проекта при помощи cmake. Правильно ли я понял, что нужно добавить дефайн?
add_definitions(-D_X86_) или add_definitions(-DX86)
Error c2059 синтаксическая ошибка
Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2011
Репутация: нет
Всего: нет
а он мне выдаёт:
1>—— Построение начато: проект: 03 — MSDN Demo, Конфигурация: Debug Win32 ——
1> Demo.c
1>e:cpp 3 — msdn demosay.h(1): error C2061: синтаксическая ошибка: идентификатор «Say»
1>e:cpp 3 — msdn demosay.h(1): error C2059: синтаксическая ошибка: ;
1>e:cpp 3 — msdn demosay.h(2): error C2449: имеется «<" в пределах области видимости файла (возможно, отсутствует заголовок функции)
1>e:cpp 3 — msdn demosay.h(11): error C2059: синтаксическая ошибка: >
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Это сообщение отредактировал(а) Lowe — 6.12.2011, 23:56
Бревно
Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011
Репутация: 3
Всего: 19
Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2011
Репутация: нет
Всего: нет
Бревно
Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011
Репутация: 3
Всего: 19
Потому что это видеоурок, там всякого наболтать могут. Читай книгу, если хочешь получить знания. Список хорошей литературы есть где-то в одном из С++-сных разделов фурума, там тема прикрепленная.
Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.12.2011
Репутация: нет
Всего: нет
они прям там компилят и запускают — всё работает на глазах
ну вообще я по Шилдту занимаюсь (и уже тут на форуме по книгам тоже много пересмотрел, но только после того, как Шилдта приобрёл), но у него, во-первых, про сам язык, а во-вторых, сначала про C, и только потом про C++, а мне нужно было ещё что-нибудь по Студии
вот и наткнулся на майкрософтовский справочник, а оттуда и на видеоуроки
разумеется, захотелось попробовать — и тут же по первому видео не получилось сделать