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: непредвиденные лексемы перед «<"; пропуск вероятного тела функции

Ошибка4error C1075: конец файла обнаружен ранее, чем левая фигурная скобка «<" в "h:учебаsamotkan9samotkan9Form1.h(4)

// Samotkan9.cpp: главный файл проекта.

#include «stdafx.h»
#include «Form1.h»

using namespace Samotkan9

[STAThreadAttribute]
int main(array ^args)
<
// Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// Создание главного окна и его запуск
Application::Run(gcnew Form1());
return 0;
>;
>

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) <
this->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.

Оцените статью