【问题标题】:Learning C, my compiler already knows bool (Visual Studio 2017) [duplicate]学习 C,我的编译器已经知道 bool (Visual Studio 2017) [重复]
【发布时间】:2018-11-22 18:23:35
【问题描述】:

整个夏天我都在通过《C 编程 - 一种现代方法》这本书来学习 C,现在解决问题:

当我写作时:

#include <stdbool.h>

编译器无法运行程序,因为它不能包含 bool。当我立即使用 bool 时,它知道它应该做什么。

这是 Visual Studio 2017 中的新功能,还是我在开始文档时出错并获得了 C# 或 C++? (我不知道那些语言,但我认为 boolean 很好地集成在其中)

我通过“Windows 桌面向导 -> 空项目 -> 源文件 -> 添加 -> 新项目 -> C++ 文件 (.cpp)”启动我的编译器

这不是一个大问题(因为它主要是让事情变得更容易)但我想学习 C 而不是 C++/C#。

【问题讨论】:

  • .cpp 后缀适用于 C++,因此您使用 C++ 而不是 C 进行编程。而 C++ 有一个 bool 类型,而不需要 &lt;stdbool.h&gt; 头文件。
  • 编译器中为什么选择C++文件?没有 C 选项?
  • C# 更容易学习。我很钦佩你的水平如此之低,但学习语言,尤其是你的第一个语言需要数年时间。如果你觉得 C 太难了,试试 C#。
  • @JeremyThompson 你写的是真的,但是 .NET 及其非常大的库让很多东西看起来像是“通过魔法”工作的。有一个非常大的抽象不会向您展示您的计算机可以做什么以及它是如何做到的。从 C 开始(带有“低级”的感觉)我觉得你有更好的工具来探索 .NET 的内部工作
  • @xanatos 你是对的。我希望我有耐心在 20 年前学习 C

标签: c++ c


【解决方案1】:

尽管有相反的说法,Visual Studio 附带的 C++ 编译器不是 C 编译器(在我看来,它是面向 Windows 的优秀 C++ 编译器)。即使您将源文件命名为 .c 并注意编译器设置,它仍然不是 C 编译器。

如果您想编写 C 程序,最好的选择是使用真正的 C 编译器; cygwin 中的 gcc 是一个很好的工具集。

【讨论】:

    【解决方案2】:

    为(您的)文件提供扩展名.c,而不是.cpp。这样,Visual Studio 将使用 C 语言而不是使用 C++ 语言。但请注意 Bathsheba 的回复……以及扩展了他所写内容的 so answer

    【讨论】:

    • 我还将项目设置为“编译为 C”。
    • @Baldrick 默认设置应该类似于“autosense”。如果我添加一个 .c 文件然后写入 bool test = true 我会在 booltrue 上都收到错误... 一些 msdn 在此:默认情况下,CL 假定具有 .c 扩展名的文件是 C 源文件,扩展名为 .cpp 或 .cxx 的文件是 C++ 源文件。
    • 很公平。我想通过项目编译设置,您可能也可以强制 .cpp 文件编译为 C。感谢您的信息!
    猜你喜欢
    • 2010-10-04
    • 2017-07-30
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2023-03-26
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多