c++ - 获得适用于 C++ 的正确编译器

标签 c++ visual-c++

我正在尝试学习 C++,但我阅读或查找的大部分教程和书籍都教你这个...

(我假设像大多数教程一样,他们一开始就在 win32 控制台或 CLR 控制台中教授编码。在任何一种情况下,以下内容都不起作用。)

#include <iostream>
int main(  )
{
    std::cout << "Hello World\n";
    return (0);
}

我的 IDE 是 Visual C++ 2008 Express 版,他们接受这样的代码

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

或者像这样

#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hello World");
    return 0;
}

老实说,我对这些都没有区别,我不确定我是否应该只下载一个旧的编译器以便它工作。如果有人能告诉我这些有什么区别以及从那里去哪里。这将有很大帮助。谢谢 [编辑]

我正在尝试做一个简单的 hello world。但是我收到错误“系统找不到指定的路径”。我有显示错误的屏幕截图。当我在构建文件之前明确保存文件时,它还说我的项目已过时。显然它找不到可执行文件。我去了调试文件夹,没有看到任何 .exe 文件。

Screenshot

Screenshot

[已编辑]

好的,现在当我尝试构建项目时,出现以下错误

1>------ Rebuild All started: Project: test, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'test', configuration 'Debug|Win32'
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>test.cpp
1>c:\users\numerical25\desktop\test\test\test.cpp(1) : warning C4627: '#include <iostream>': skipped when looking for precompiled header use
1>        Add directive to 'stdafx.h' or rebuild precompiled header
1>c:\users\numerical25\desktop\test\test\test.cpp(6) : error C2653: 'std' : is not a class or namespace name
1>c:\users\numerical25\desktop\test\test\test.cpp(6) : error C2065: 'cout' : undeclared identifier
1>Build log was saved at "file://c:\Users\numerical25\Desktop\test\test\Debug\BuildLog.htm"
1>test - 2 error(s), 1 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

这是我使用的代码

#include <iostream>
#include "stdafx.h"

int main(  )
{
    std::cout << "Hello World\n";
    return (0);
}

注意:我尝试在有和没有#include "stdafx.h"的情况下使用它当我在没有#include "stdafx.h"的情况下尝试时,它说我可能会丢失它。

最佳答案

不确定你在问什么。您给出的前两个示例是有效的 C++ 程序,应该(将)用 VC++ 编译。第三个示例是必须使用/CLR 编译器开关编译的 C++/CLI 程序(这称为托管 C++)。

编辑:添加更具体的信息(来自下面的评论):

前两个示例是标准( native )C++(尽管第二个示例具有 MS 专有的宏)。它们编译为 native 代码。第三个是 C++/CLI(C++ 的“托管”扩展)。它编译为托管 (.NET) 代码。只有第三个片段以任何方式与 .NET 框架交互。使用 VS 2008 中的适当项目,这三者绝对是可构建和可运行的(无需命令行)!

根据您的最新更新,看起来您可能已经修改了一些项目属性并更改了一些路径。该应用程序正在构建,但是当您尝试通过 VS 运行它时(顺便说一句,您应该使用 <Ctrl>+F5 来执行此操作),找不到可执行文件(有几种方法可以通过更改或播放来搞砸它各种设置)。

请注意构建和运行之间的区别。构建是编译和链接源代码的过程。运行正在启动生成的可执行文件。您似乎对这些感到困惑(从您对“...过时”对话框的提示来看)。如果您在对项目进行更改后尝试运行而不重建,出现“...过时”对话框是正常的(即使该更改已保存)。只需确保单击"is"。您需要先构建项目,然后才能运行它。

我的建议是完全删除您的项目和解决方案。按照这个现在非常重量级的线程中其他地方的建议,创建一个新的空项目,并且不要修改任何项目设置。如果这不起作用,那就是严重错误了!

另一个编辑:只是为了完成,因为这个问题一直在变化:

正如其他人已经指出的那样,第一个片段的最终问题是使用了预编译 header (PCH)。 PCH 在新的 VS C++ 项目中默认打开。它们的目的是在许多实现文件包含同一组头文件时加快编译速度——防止编译器必须为每个编译单元解析头文件。

你有三个选择:

  1. (推荐)禁用 PCH -- 项目属性 --> 配置属性 --> C/C++ --> 预编译 header :将创建/使用预编译 header 设置为不使用预编译 header 。 (您无需对“stdafx.h”文件或 #include 执行任何操作。)
  2. 放置你常用的#include s 在“stdafx.h”中。在你的情况下,你会把 #include <iostream>在“stdafx.h”中。
  3. 将您的 #include s after `#include "stdafx.h"。 Microsoft 要求“stdafx.h”是编译单元中的第一个包含文件。

关于c++ - 获得适用于 C++ 的正确编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304834/

相关文章:

c++ - 如何获取资源文件中的数据?

c++ - 在ubuntu上安装c++标准库文件

c++ - 这个比较是否不一致(还是存在另一个问题)?

c++ - 字符串*还是字符*?

c++ - 使用 Microsoft Visual C++ 构建工具的 CMake

visual-c++ - 如何在mfc中不使用outlook创建 ".msg"文件?

c++ - 在运行时更改编辑框的颜色

visual-studio-2010 - 在opencv中用imshow显示max()函数的结果

c - 如何查看 LPVOID 类型变量的内容

c++ - Boost wave上下文concept_check问题