<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ 编译器 - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ freeCodeCamp 是一个免费学习编程的开发者社区，涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等，还有活跃的技术论坛和丰富的社区活动，在你学习编程和找工作时为你提供建议和帮助。 ]]>
        </description>
        <link>https://www.freecodecamp.org/chinese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ 编译器 - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/chinese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 11 May 2026 20:01:12 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/chinese/news/tag/compilers/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ 什么是编译器？为初学者解释 C 语言中的编译器 ]]>
                </title>
                <description>
                    <![CDATA[ 原文：What is a Compiler? Compilers in C Explained for Beginners [https://www.freecodecamp.org/news/what-is-a-compiler-in-c/]，作者：Tiago Monteiro [https://www.freecodecamp.org/news/author/tiago/] 你是否知道软件的存在要归功于编译器？ 确切地说 ，编译器非常重要，所有编程语言中都存在某种形式的编译器。 但是，什么是编译器？它们到底做了什么？ 本文将教分享：  1. 用一个比喻说明什么是编译器  2. C 语言编译器的基本历史 别担心，你不需要编程经验来了解编译器是什么。 你只需要先理解这个概念，然后如果你愿意，你可以去寻求技术定义。 1. 什么是编译器？ 照片来自 Pexels [https://www.pexels.com/photo/black-iphone-7-on-brown-table-699122/?utm_content=attributionCopyText&utm_med ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/what-is-a-compiler-in-c/</link>
                <guid isPermaLink="false">6247fc0a99ec7406219e536d</guid>
                
                    <category>
                        <![CDATA[ 编译器 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp.org ]]>
                </dc:creator>
                <pubDate>Fri, 01 Apr 2022 11:00:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2022/04/1-YhjIVZXE56R6YZaTF-Lzig.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>原文：<a href="https://www.freecodecamp.org/news/what-is-a-compiler-in-c/">What is a Compiler? Compilers in C Explained for Beginners</a>，作者：<a href="https://www.freecodecamp.org/news/author/tiago/">Tiago Monteiro</a></p><p>你是否知道软件的存在要归功于编译器？</p><p>确切地说 ，编译器非常重要，所有编程语言中都存在某种形式的编译器。</p><p>但是，什么是编译器？它们到底做了什么？</p><p>本文将教分享：</p><ol><li>用一个比喻说明什么是编译器</li><li>C 语言编译器的基本历史</li></ol><p>别担心，你不需要编程经验来了解编译器是什么。</p><p>你只需要先理解这个概念，然后如果你愿意，你可以去寻求技术定义。</p><h2 id="1-">1. 什么是编译器？</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/0d0a8ecedae3fdae03db974a00c1dfa51a6dc9fef2afbd2e0c02ced98d7bc9a6/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a78467a6c365562463658493656305f546e782d5059672e6a706567" class="kg-image" alt="手机图片" width="600" height="400" loading="lazy"><figcaption>照片来自 <a href="https://www.pexels.com/photo/black-iphone-7-on-brown-table-699122/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener ugc nofollow"><strong><strong>Pexels</strong></strong></a><strong>，</strong>作者<strong> <strong><a href="https://www.pexels.com/@lastly?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener ugc nofollow">Tyler Lastovich</a></strong></strong></figcaption></figure><p>想象一下，你正在学习一门语言（法语、西班牙语或葡萄牙语），并且你想知道单词或句子的含义。</p><p>为此，你将使用谷歌翻译。</p><p><strong>第一步</strong>是知道你将在Google翻译中键入的内容，并检查其键入是否正确。</p><p><strong>第二步</strong>是选择要转换的语言。对于许多读者来说，这可能是英语。</p><p><strong>第三步</strong>也是最后一步是了解这句话在英语中的含义。</p><p>从本质上讲，你只是在Google翻译中输入了你不理解的句子或单词，谷歌翻译将这句话翻译成英文。</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/6faefda10443e60f67d2c3220eeb427db9f48b09fee7d5a0a085c5d50a877921/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a632d6d4a43796a5954725667757853677367597672512e706e67" class="kg-image" alt="将nadar（葡萄牙语）翻译成游泳（英语）" width="600" height="400" loading="lazy"><figcaption>示例：nadar（葡萄牙语）-&gt; swimming（英语）</figcaption></figure><p>同样的事情也发生在编程中。</p><p>在这种情况下，我们使用的是 C 语言。</p><p>你必须采取的<strong>第一步</strong>是知道你将在<code>.c</code>文件中键入的内容以及是否正确键入。 在此示例中，该文件称为<code>main.c</code>。</p><pre><code class="language-c">#include &lt;stdio.h&gt;

int main()
{
	printf("Hello World");
    
    return 0;
}</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/1f5aced7d98d962e8680bf86014fab8ae4284a7d92ef64f7535374a1a9394deb/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a42746a794e6b76583065626f55354a567344306179512e706e67" class="kg-image" alt="将在控制台中打印“Hello world”的代码 " width="600" height="400" loading="lazy"><figcaption><strong>第一步：此代码将打印 “Hello world”</strong></figcaption></figure><p><strong>第二步</strong>是编译它。它将根据你的编译器进行编译。</p><pre><code class="language-bash">gcc -o main main.c -Wall</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/3e0684a37ee2cb7af4539b8abac2ab82c28303447a8e0db9b0331549fc11d4c1/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a6371536f5f4e70594f594b64536a6c4273385f4569512e706e67" class="kg-image" alt="编译代码的 Bash 命令 " width="600" height="400" loading="lazy"><figcaption>第二步：编译c代码的命令</figcaption></figure><p><strong>第三步</strong>也是最后一步是简单地了解程序的输出 - 确保它像我们想要的那样运行。</p><p>快速提示：如果你想知道命令行终端中每个单词的含义，请查看本文的“更多...”部分！</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/a0a492c6bda59f3017191ca6438cfe0a5b0094a0fa2f80ac7d38d064368ba6cc/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a336f79524e58387478586d3352517271335842574e512e706e67" class="kg-image" alt="Hello world" width="600" height="400" loading="lazy"><figcaption>第三步：Hello world</figcaption></figure><p>你可以在下图中看到编译过程的直观说明：</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/0400d78e172ac7275f3621f5152c21e1a287958e499a286ef6761a167907ffea/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a677573563570586356486336765566656e62697544512e706e67" class="kg-image" alt="翻译文件与编译文件的视觉比较 " width="600" height="400" loading="lazy"><figcaption>比较 C 文件的编译与单词的翻译</figcaption></figure><h2 id="c-">C 语言编译器的工作原理</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/4f99981e15faa78981724663eb20a420c2201773c8f99af6a0150c8adcbb6940/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a4f48377a7153304b79504d6a357143666a4d2d6c54412e6a706567" class="kg-image" alt="1*OH7zqS0KyPMj5qCfjM-lTA" width="600" height="400" loading="lazy"><figcaption>图片来自 <a href="https://www.pexels.com/photo/person-holding-sony-ps4-dualshock-4-21067/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener ugc nofollow">Pexels</a>，作者 <a href="https://www.pexels.com/@jeshoots?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener ugc nofollow">JÉSHOOTS</a></figcaption></figure><p>多年来，技术以惊人的速度发展。这同样适用于编译器。</p><p>随着时间的推移，C 语言编译器已经演变成许多版本。</p><p>就像 PlayStation – 有 Playstation 2、Playstation 3、Playstation 4, 等等。</p><p>C 语言编译器也是如此。一旦它被标准化，就创建了许多版本：</p><ul><li>C89/90, C的一个标准化版本</li><li>C99 在1999年取代了C89和C90</li><li>C11 在2011年取代了C99</li><li>C17 在2018年取代了C11</li><li>C2X 将在2023年取代C17</li></ul><p>就像 PlayStation 一样，每个新版本都有新功能。</p><p>有些人更喜欢在他们的 PlayStation2 上玩。</p><p>程序员也是如此。由于各种原因，程序员可能更喜欢使用 C99 或 C11 编写和调试 C 代码。</p><h2 id="-">有关编译器的更多信息</h2><p>我们在上面的代码中看到的"gcc -o main main.c -Wall"到底是什么意思？让我们一点一点地分解一下。</p><p><code>gcc</code> 是调用编译过程（预处理、编译、程序集和链接）的命令。</p><p><code>-o main</code> 表示由编译"main.c"创建的可执行文件的名称将称为"main"。</p><p><code>main.c</code> 是要编译的文件的名称。</p><p><code>-Wall</code> 该选项启用编译器警告。编译器警告会让你知道代码中的某些内容不太正确。</p><p>这类似于语法。 如果语法建议更改句子，在大多数情况下，你应该更改它以使其更清晰、更正确。</p><p>否则，如果你试图改变一个已经正确的短语中的某些内容，它可能会变得难以辨认。</p><p>同样，如果忽略代码中的警告，它最终会导致重大错误，你的项目甚至可能失败。</p><h3 id="--1">"标准化"是什么意思？</h3><p>所以你可能想知道，我们在上面看到的"标准化"是什么意思？</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://camo.githubusercontent.com/c70352ddaa543bf5ba8ead74f2f4cc9917b5aadbfbb17292fd007afd1303e259/68747470733a2f2f6d69726f2e6d656469756d2e636f6d2f6d61782f313430302f312a48636154794872694e50376d7872685a5f466a696a772e6a706567" class="kg-image" alt="1*HcaTyHriNP7mxrhZ_Fjijw" width="600" height="400" loading="lazy"><figcaption>图片来自 <a href="https://www.pexels.com/photo/architecture-building-construction-daylight-534220/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener ugc nofollow">Pexels</a>，作者 <a href="https://www.pexels.com/@pixabay?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener ugc nofollow">Pixabay</a></figcaption></figure><p>让我们通过另一个类比来看看它。建造房屋的方法有很多种。但是有一种方法通常是最有效和最安全的。</p><p>因此，人们和组织必须同意有一种标准的建造房屋的方式。</p><p>创建该标准的过程称为标准化。</p><p>当一组规则成为标准时，这组规则就变得标准化。</p><p>这组规则可以是法律，证书，也可以只是某个领域工人使用的基本惯例。</p><p>这同样适用于 C 语言编译器。</p><p>正是标准化帮助人们就应该如何做事达成一致，无论是 C 语言编译器，汽车组件还是其他任何东西。</p><p>标准化还可以帮助人们就使用哪个版本的C达成一致。C 语言编译器就是一个例子。</p><p>长期以来，C 语言编译器一直被认为是软件开发的基本组成部分。</p><p>由于采用了 C 语言编译器标准，开发人员可以编译和运行其他人的代码，而不必担心他们的编译器无法正常工作。</p><p>为了创建如此重要的行业组成部分，必须有一个组织负责建立标准</p><p>许多组织创建和管理标准。对于 C 语言编译器，<code>ISO</code>（国际标准化组织）管理标准。</p><p>只要<code>ISO</code>管理未来的 C 语言编译器标准，程序员和公司就可以开发可靠的软件。</p><h2 id="--2">结语</h2><p>感谢你阅读本文！现在你明白了：</p><ul><li>什么是编译器</li><li>C 语言编译器的历史</li><li>标准化意味着什么</li></ul><p>这个 <a href="https://github.com/tiagomonteiro0715/freecodecamp-my-articles-source-code">GitHub</a> 仓库包含我创建的代码和图像文件。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 如何在 Vs Code 中编译 C++ ]]>
                </title>
                <description>
                    <![CDATA[ C ++ 是一种静态类型的、自由格式的、（通常）已编译的、多范例的、中级通用的编程语言。 简而言之，C ++ 是基于 C 的复杂、高效、通用的编程语言。 它是由 Bjarne Stroustrup [http://www.stroustrup.com/] 于 1979 年开发的。 C ++ 的主要功能之一是编译器。这用于编译和运行 C ++ 代码。 > 编译器是一种特殊程序，用于处理以特定编程语言（如 C ++）编写的语句，并将其转换为计算机处理器使用的机器语言或“代码”。 我之所以写这篇文章，是因为我有一个 C ++任务，需要使用编译器。像往常一样，每个人都在使用 CodeBlocks  IDE [http://www.codeblocks.org/] 和 Visual Studio IDE [https://visualstudio.microsoft.com/]。但是我已经习惯了 Visual Studio Code 来编写所有编程内容。 然后，我开始寻找在我自己的 Vs Code 编辑器中直接编译 C ++的方法，也就有了本文:)。 在本文中，我将向你展示如何在 V ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/how-to-compile-your-c-code-in-visual-studio-code/</link>
                <guid isPermaLink="false">5fe066c739641a0517d5229f</guid>
                
                    <category>
                        <![CDATA[ C语言 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ VSCode ]]>
                    </category>
                
                    <category>
                        <![CDATA[ 编译器 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chengjun.L ]]>
                </dc:creator>
                <pubDate>Mon, 22 Mar 2021 09:20:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2020/12/banner-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>C ++ 是一种静态类型的、自由格式的、（通常）已编译的、多范例的、中级通用的编程语言。</p><p>简而言之，C ++ 是基于 C 的复杂、高效、通用的编程语言。</p><p>它是由 <a href="http://www.stroustrup.com/">Bjarne Stroustrup</a> 于 1979 年开发的。</p><p>C ++ 的主要功能之一是编译器。这用于编译和运行 C ++ 代码。</p><blockquote>编译器是一种特殊程序，用于处理以特定编程语言（如 C ++）编写的语句，并将其转换为计算机处理器使用的机器语言或“代码”。</blockquote><p>我之所以写这篇文章，是因为我有一个 C ++任务，需要使用编译器。像往常一样，每个人都在使用 <a href="http://www.codeblocks.org/">CodeBlocks &nbsp;IDE</a> 和 <a href="https://visualstudio.microsoft.com/">Visual Studio IDE</a>。但是我已经习惯了 Visual Studio Code 来编写所有编程内容。</p><p>然后，我开始寻找在我自己的 Vs Code 编辑器中直接编译 C ++的方法，也就有了本文:)。</p><p>在本文中，我将向你展示如何在 Vs Code 中设置编译器，并为你提供一些优秀 C ++ 资源的链接。</p><h1 id="-"><strong>准备工作</strong></h1><ul><li>C++ 预备知识<br>（我假设你正在学习 C ++，即将开始学习，或者只是为了好玩而阅读。本文不是 C ++ 101 教程——需要读者对 C ++ 已经有一些了解。）</li><li>Visual Studio Code 编辑器<br><a href="https://code.visualstudio.com/#alt-downloads">点击此处</a>下载和阅读配置文档：<a href="https://code.visualstudio.com/docs/?dv=win">Windows</a>，<a href="https://code.visualstudio.com/docs/?dv=linux64_deb">Linux</a>，<a href="https://code.visualstudio.com/docs/?dv=osx">Mac</a></li><li><strong><strong>网络连接</strong>（<strong>!important</strong>）</strong></li></ul><h3 id="--1">免责声明！</h3><p>在本文中，我将始终使用 Windows 操作系统，但是我将提供一些资源的链接，这些资源将对那些使用其他操作系统的人有所帮助。</p><p>现在开始吧！</p><h1 id="-c-"><strong>下载和安装 C++ 编译器</strong></h1><ul><li>访问 <a>www.mingw.org</a>，点击 “Download/Installer”，下载 MinGW 配置文件。<a href="https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/">Windows 电脑下载链接</a>，<a href="http://www.mingw.org/wiki/LinuxCrossMinGW">Linux 电脑下载链接</a>，<a href="https://brewinstall.org/Install-mingw-w64-on-Mac-with-Brew/">下载链接</a>。</li></ul><blockquote>MinGW 是 “Windows 的 Minimallist GNU” 的缩写，是 Microsoft Windows 的本地简易开发环境。</blockquote><ul><li>下载后，安装 MinGW，等待显示 “MinGW Installation Manager”。</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture1.png" class="kg-image" alt="Capture1" width="600" height="400" loading="lazy"></figure><ul><li>当屏幕显示 “MinGW Installation Manager”时，点击 <code>mingw32-gcc-g++</code>，然后选择 “Mark for Installation”。</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture2.png" class="kg-image" alt="Capture2" width="600" height="400" loading="lazy"></figure><ul><li>在左上角菜单中，点击 “Installation &nbsp;&gt; Apply Changes”。</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture3.png" class="kg-image" alt="Capture3" width="600" height="400" loading="lazy"></figure><ul><li>等待完全安装好。在此过程中，请确保你具有稳定的 Internet 连接。</li></ul><h1 id="-path-c-">编辑 PATH 环境变量，包含一个存放 C ++ 编译器的目录</h1><p>PATH 是类 Unix 操作系统、DOS、OS/2 和 Microsoft Windows上的环境变量，它指定可执行程序所在的目录集。通常，每个执行进程或用户会话都有其自己的 PATH 设置。——<a href="https://en.wikipedia.org/wiki/PATH_(variable)">维基百科</a></p><p>安装好 MinGW 后，可以在 C：\ MinGW \ bin 中找到它。现在，你必须将此目录包括在环境变量 PATH 中。如果你已经使用计算机一段时间，那么你应该已经知道该怎么做了。但是如果你不了解，那么这里有一些资源：</p><ul><li><a href="https://www.computerhope.com/issues/ch000549.htm">Windows OS 上的操作指南</a></li><li><a href="https://www.cyberciti.biz/faq/unix-linux-adding-path/">Linux 上的操作指南</a></li><li><a href="https://hathaway.cc/2008/06/how-to-edit-your-path-environment-variables-on-mac/">Mac OS 上的操作指南</a></li></ul><h1 id="-vs-code-code-runner-">在 VS Code 中安装 Code Runner 扩展</h1><p>现在我们已经设置好编译器，来安装 Code Runner 吧。</p><p>使用 Code Runner，你可以运行多种语言的代码段或代码文件：</p><blockquote>C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, Lisp, Kit, 及自定义命令.</blockquote><ul><li>点击<a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner">此处</a>下载</li><li>或在 “Vs Code 市场”选项卡中搜索</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture4.png" class="kg-image" alt="Capture4" width="600" height="400" loading="lazy"></figure><ul><li>下载之后重启 Vs Code</li><li>在 Vs Code 打开你的 C++ 文件。以下是一个最简单的代码示例：</li></ul><pre><code class="language-c">#include &lt;iostream&gt;
using namespace std;
int main() 
{
    cout &lt;&lt; "Hello world!";
    return 0;
}
</code></pre><p>将此文件保存为 <code>test.cpp</code>。</p><h1 id="-code-runner-"><strong>用 Code Runner 运行代码</strong></h1><ul><li>使用快捷方式 <code>Ctrl+Alt+N</code></li><li>或者按 F1 键，选择 /type Run Code</li><li>或者右击文本编辑器，在菜单中点击 Run Code</li></ul><p>代码运行后，输出将显示在“输出”窗口中。使用 Ctrl + 快捷方式打开输出窗口。</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/10/Capture5.png" class="kg-image" alt="Capture5" width="600" height="400" loading="lazy"></figure><h1 id="--2"><strong>停止运行代码</strong></h1><ul><li>使用快捷方式 <code>Ctrl+Alt+M</code></li><li>或者按 F1 键，选择 /type Stop Code Run</li><li>或者右击输出，在菜单中点击 Stop Code Run</li></ul><p>好棒！你成功在 Vs Code 中设置了 C++ 环境！</p><h1 id="--3"><strong>总结</strong></h1><p>快速提示：默认情况下，Vs Code 的输出终端为只读。如果你正在运行需要用户输入的代码，例如：</p><pre><code class="language-c">#include &lt;iostream&gt;
using namespace std;

const double pi = 3.14159; 

void calculate()
{
  double area; 
  double radius;

  cout&lt;&lt;"Enter Radius: "&lt;&lt;endl; 
  cin&gt;&gt;radius;

  area = pi * radius * radius; 

  cout&lt;&lt;"area is: "&lt;&lt;area&lt;&lt;endl;
 }
 
int main()
{
  calculate(); 
  return 0;
}
</code></pre><p>你将不能在终端输入内容， <code>Cannot edit in read-only terminal</code>。<br>你需要启动 读-写，来解决这个问题。</p><ul><li>在 Vs Code 中，点击 Go to File &gt; Preference &gt; Setting</li><li>在左边面板的用户选项卡，找到扩展部分</li><li>滚动找到 “Run Code Configuration”</li><li>滚动找到一个复选框 <code>Run in Terminal</code>（是否在集成终端中运行代码），选中它</li></ul><p>或者</p><ul><li>在 <code>setting.json</code> 文件中，添加：</li></ul><pre><code>"code-runner.runInTerminal": true
</code></pre><p>恭喜，你完成所有步骤了！</p><h1 id="c-"><strong>C++ 资源</strong></h1><p>你可以通过下列资源，开始学习 C++：</p><ul><li><a href="https://www.learncpp.com/">https://www.learncpp.com/</a></li><li><a href="https://www.codecademy.com/learn/learn-c-plus-plus">https://www.codecademy.com/learn/learn-c-plus-plus</a></li><li><a href="https://www.udemy.com/free-learn-c-tutorial-beginners/">https://www.udemy.com/free-learn-c-tutorial-beginners/</a></li><li><a href="https://www.sololearn.com/Course/CPlusPlus/">https://www.sololearn.com/Course/CPlusPlus/</a></li><li><a href="https://www.youtube.com/watch?v=vLnPwxZdW4Y">https://www.youtube.com/watch?v=vLnPwxZdW4Y</a></li><li><a href="https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm">https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm</a></li><li><a href="https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm">https://makeawebsitehub.com/learning-c/</a></li></ul><h1 id="credits"><strong>Credits</strong></h1><ul><li><a href="http://www.mingw.org/">MinGW Project</a></li><li><a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner">Code Runner</a> by <a href="https://marketplace.visualstudio.com/publishers/formulahendry">Jun Han</a></li></ul><p>感谢阅读！</p><p>原文：<a href="https://www.freecodecamp.org/news/how-to-compile-your-c-code-in-visual-studio-code/">How to compile your C++ code in Visual Studio Code</a>，作者：<a href="https://www.freecodecamp.org/news/author/bolajiayodeji/">Bolaji Ayodeji</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 即时编译的原理 ]]>
                </title>
                <description>
                    <![CDATA[ 即时编译是一种提升解释型程序性能的方法。在执行的时候，可以将程序编译为本机代码以提升其性能。即时编译也被称为动态编译。 动态编译比静态编译具有一些优势。在运行 Java 或 C＃应用程序时，运行时环境可以对其进行概要分析，以生成更多优化的代码。如果应用程序在运行时行为发生了变化，则运行时环境可以重新编译代码。 即时编译的缺点包括启动延迟和运行时编译的资源。为了降低使用资源，许多即时编译器仅编译经常使用的代码路径。 概述 传统上，有两种方法可以将源代码转换为可以在平台上运行的形式。静态编译将代码转换为特定平台的语言。解释器直接执行源代码。 即时编译尝试利用两者的优势。在运行解释型程序时，即时编译器确定最常用的代码并将其编译为机器代码，可以通过某种方法或较小的代码段完成。 动态编译最初是由 J. McCarthy 在 1960 年的一篇关于 LISP 的论文中提到的。 即时编译，即时或动态翻译是在程序执行期间进行的编译，意思是在运行时，而不是在执行之前，将程序翻译成机器代码。即时的优点在于，由于编译是在运行时进行的，因此即时编译器可以访问动态运行时信息，从而可以进行更好的优化（ ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/just-in-time-compilation-explained/</link>
                <guid isPermaLink="false">5ff7d1e439641a0517d53587</guid>
                
                    <category>
                        <![CDATA[ 编译器 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ 编程语言 ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chengjun.L ]]>
                </dc:creator>
                <pubDate>Fri, 08 Jan 2021 03:33:19 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2021/01/photo-1580706483913-b6ea7db483a0.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>即时编译是一种提升解释型程序性能的方法。在执行的时候，可以将程序编译为本机代码以提升其性能。即时编译也被称为动态编译。</p><p>动态编译比静态编译具有一些优势。在运行 Java 或 C＃应用程序时，运行时环境可以对其进行概要分析，以生成更多优化的代码。如果应用程序在运行时行为发生了变化，则运行时环境可以重新编译代码。</p><p>即时编译的缺点包括启动延迟和运行时编译的资源。为了降低使用资源，许多即时编译器仅编译经常使用的代码路径。</p><h2 id="-">概述</h2><p>传统上，有两种方法可以将源代码转换为可以在平台上运行的形式。静态编译将代码转换为特定平台的语言。解释器直接执行源代码。</p><p>即时编译尝试利用两者的优势。在运行解释型程序时，即时编译器确定最常用的代码并将其编译为机器代码，可以通过某种方法或较小的代码段完成。</p><p>动态编译最初是由 J. McCarthy 在 1960 年的一篇关于 LISP 的论文中提到的。</p><p>即时编译，即时或动态翻译是在程序执行期间进行的编译，意思是在运行时，而不是在执行之前，将程序翻译成机器代码。即时的优点在于，由于编译是在运行时进行的，因此即时编译器可以访问动态运行时信息，从而可以进行更好的优化（例如内联函数）。</p><p>关于即时编译，有一个重要之处是它将字节码编译为正在运行的机器的机器代码指令。意思是，生成的机器代码针对正在运行的机器的 CPU 架构进行了优化。</p><p>即时编译器的一些示例是 Java 中的 JVM（Java 虚拟机）和 C＃中的 CLR（公共语言运行库）。</p><h2 id="--1">历史</h2><p>最初，编译器负责将高级语言（比汇编程序高的语言）转换为目标代码（机器指令），然后将其（通过链接器）链接为可执行文件。</p><p>在语言发展的某一时期，编译器将高级语言编译为伪代码，然后将其解释（由解释器）以运行你的程序。这消除了目标代码和可执行文件，并允许这些语言可移植到多个操作系统和硬件平台。</p><p>Pascal（编译为 P-Code）是最早的一个。Java 和 C＃ 是最近的示例。最终，术语 P-Code 被替换为字节码，因为大多数伪操作都是一个字节长。</p><p>即时（即时）编译器是运行时解释器的功能，它不会在每次调用方法时都解释字节码，而是将字节码编译为正在运行的计算机的机器代码指令，然后调用此目标代码。理想情况下，运行目标代码的效率将克服每次运行时重新编译程序的效率低下的问题。</p><h3 id="--2">典型场景</h3><p>源代码已完全转换为机器代码。</p><h3 id="--3">即时场景</h3><p>源代码将被转换为汇编语言，例如结构 [对于 C＃来说，是用于 ex IL（中间语言），对于 Java，是 ByteCode）。</p><p>仅当应用程序的需求（即需要的代码）被转换为机器代码时，中间代码才被转换为机器语言。</p><h2 id="--4"><strong>比较即时和非即时</strong></h2><p>在即时编译中，并非所有代码都首先转换为机器代码。一部分必需的代码将被转换为机器代码，然后，如果所调用的方法或功能不在机器中，则将其转换为机器代码，从而减轻 CPU 的负担。由于机器代码将在运行时生成，因此即时编译器将生成针对机器的 CPU 体系结构进行了优化的机器代码。</p><p>即时编译的一些示例：</p><ul><li>Java：JVM（Java 虚拟机）</li><li>C＃：CLR（公共语言运行时）</li><li>Android：较新版本的 DVM（Dalvik 虚拟机）或 ART（Android 运行时）</li></ul><p>Java 虚拟机（JVM）执行字节码并维护一个函数执行多少次的计数。如果此计数超过预定义的限制，则即时编译将代码编译为机器语言，该语言可以直接由处理器执行（不同于正常情况下， javac 将该代码编译为字节码，然后再编译为 Java，解释器会逐行解释此字节码，然后将其转换为机器代码并执行）。</p><p>同样，下次计算此函数时，将再次执行相同的编译代码。这与正常解释不同，在正常解释中，代码逐行再次解释。前者使执行速度更快。</p><p>原文：<a href="https://www.freecodecamp.org/news/just-in-time-compilation-explained/">Just in Time Compilation Explained</a></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
