Я просмотрел другие посты и, честно говоря, я до сих пор не уверен, что является причиной проблемы. Я программирую в 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.