Using namespace system c

I am trying to use the Console::SetCursorPosition(int, int) method. When I add the line using namespace System; , as shown in the C++ example from the preceding MSDN documentation, I get the error "Error: name must be a namespace name" . I have been trying stuff for a couple hours now, but frustratingly without success. I have come across a ton of documentation for Visual Studio 2010 and 2012, but very little for 2013. The closest I have come is Lib Files as Linker Input. Steps 1-3 are easy enough, but step 4 is not clear to me: "Modify the Additional Dependencies property.". Looking at what is already there, it seems like I can just add a .lib file. But I don’t have a System.lib.

So frustrated, so confused.

How can I use the System namespace in Visual Studio 2013 Update 4 for C++?

3 Answers 3

To formalize and expand on my comment, the Console class and generally the System namespace are part of the .NET framework.

In that context, the "C++" tab included in the MSDN documentation page of the Console::SetCursorPosition(int, int) method actually refers to the C++/CLI language. The C++/CLI language is distinct (although intentionally similar) from the C++ language. Correspondingly, the C++/CLI language contains various constructs which are not recognized by the C++ compiler toolset used when compiling Win32 projects.

In other words, to get rid of the "Error: name must be a namespace name" error, you would need to convert your Win32 C++ project to a CLR project. The easiest way to do that would be to create a new project, selecting one of the templates under "Visual C++" / "CLR":

Читайте также:  Football manager 2018 обновление составов

The equivalent of .lib file depdendencies (relative to your Lib Files as Linker Input link) of Win32 projects for CLR project would be assembly references. You’d then typically add those assembly references with "Add References" under "Common Properties , References" project properties:

However, in your specific case you may very well find out that the System assembly reference is already included as part of the CLR project template. You may want to check How to: Add or Remove References on MSDN for more details.

Finally, if you absolutely want to manually convert an existing Win32 project, you would need to set the "Common Language Runtime Support" project properties under "General" and the "C/C++ , General" tabs to one of /clr , /clr:pure , /clr:safe or /clr:oldSyntax (depending on your specific application requirements; if you’re just toying around you might want to start with /clr ) for all Configurations and Platforms as well as specify the targeted .Net framework version by directly editing the .vcxproj (as indicated in this answer). You would also still need to add assembly dependencies as with the new project approach above.

Одним из важных определений в C++ является пространство имен. Это некоторая, заранее объявленная область, содержащая в себе различные идентификаторы – функции, переменные, типы и т.д. Вводятся такие области для того, чтобы не возникал конфликт имен, то есть ситуации, когда в программе 2 различные переменные имеют одно и то же название. Наиболее часто используется пространство имен std, включающая в себя большинство стандартных функций (stl).

Подключить эти стандартные функции можно с помощью кода:

Читайте также:  Tchernov cable spade lug

Я работал над классом "Совет", который, казалось, делал все отлично. Каким-то образом, примерно через час работы над другими классами, Совет показал довольно странное поведение с точки зрения ошибок.

Ошибки, которые я получил для этого кода:

Строка 4 — "Использовать систему пространства имен"; Кто-нибудь может объяснить, что я сделал неправильно? Это кажется особенно странным, потому что у меня есть еще один класс "Шаблон", который выглядит примерно так, но не вызывает никаких ошибок.

РЕДАКТИРОВАТЬ:

Так как некоторые из вас уже сказали мне, точка с запятой может отсутствовать в заголовочном файле i, включенном до этого. Также был аналогичный вопрос, спасибо за публикацию этого;), так что теперь это мой stdafx.h (без комментариев):

насколько я знаю, эта прагма была там, когда я создал это консольное приложение с VS, поэтому, похоже, ничего не было сделано, прежде чем включать "Board.h". Я пропустил все мои другие файлы, и я никогда не включал Board нигде, кроме здесь.

EDIT 2:

поскольку я пытаюсь отследить ошибку дальше, я заметил отсутствие "использования системы пространства имен"; в другом классе, который я вставил. Это привело к довольно интересному поведению, так как ошибка теперь попадает в stdafx.h, когда я также использую систему пространства имен. Если я не ошибаюсь, будет обнаружен первый файл, который будет включен в stdafx.h Когда я изменяю порядок файлов, первым всегда будет тот, который, кажется, отсутствует; прежде чем "использовать". странную вещь.

    2 1

  • 15 май 2019 2019-05-15 07:26:41
  • iFreilicht

1 ответ

Эврика! Ошибка заключалась в stdafx.cpp, которую я нахожу странным, потому что я не помню, чтобы когда-либо редактировал его, но, ну ладно.

как вы можете ясно видеть, "stdafx" интерпретировался как неполное утверждение, в котором спецификатор типа и ";" отсутствовали, таким образом, две ошибки. Поскольку все в комментариях уже сказали мне правильно, ошибка затем была отправлена вниз путем включения в другие классы. и было показано, где произошла первая реальная строка кода (не директивы).

Читайте также:  Fmodex dll как установить

цепочка работала следующим образом:

Во всяком случае спасибо за помощь, я бы не подумал об этом в любом случае 🙂

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *