【问题标题】:The hashtag in #include <stdio.h> does not compile (C-programming)#include <stdio.h> 中的标签无法编译(C 编程)
【发布时间】:2017-12-11 09:43:32
【问题描述】:

我在第一次尝试时用 C 编写了我的第一个程序,没有任何问题,现在我想要一个新的工作区和一个新的项目,它甚至在我写任何东西之前就失败了。

#include <stdio.h>

int main(int argc, char **argv)
{
    printf("hello world\n");
    return 0;
}

上面的代码应该只打印出“hello world”。相反,我收到以下错误代码:

C:\Users\DavidH\Desktop\bingolotto\main.c:1
(function (exports, require, module, __filename, __dirname) { #include <stdio.
                                                              ^
SyntaxError: Unexpected token ILLEGAL
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3
Press any key to continue . . .

我猜我有一些错误的目录或类似的东西,但我已经创建了新的工作区并尝试了至少两个新项目,但没有成功。

我真的很想知道这里发生了什么:)

【问题讨论】:

  • 等等!你能发布命令你是如何编译代码和运行代码的?
  • 看起来您正在尝试使用 node.js“运行”C 代码?
  • "#include 中的标签 ..." 为什么我感觉这么老?
  • node.js 的引用是这里最大的危险信号。您只是想像执行脚本一样执行 .c 文件吗?
  • 一些 C++ 编译器有编译 C 代码的选项。

标签: c header syntax-error


【解决方案1】:

您实际上需要使用 C compiler(而不是像 node.js 这样的其他东西)。我建议在命令行上使用GCC,例如在终端中(gcc 的程序参数顺序很重要)。而且我建议启​​用所有警告和调试信息(默认情况下不启用),所以编译with:

 gcc -Wall -Wextra -g helloworld.c -o helloworld.exe

改进您的代码以完全不收到警告。

阅读每个使用过的功能的documentation(例如printf),即使一开始您并不了解所有功能。下载C11的规范,例如n1570,进去看看,参考一下。

成为undefined behavior 中的scared。这很棘手(您的 C 程序显然似乎大部分时间都在工作,但仍然非常错误和错误)。

学习使用调试器,例如use gdb(可能还有其他工具,例如 valgrind)。

你可能应该学会使用一些version control系统(我推荐git)和一些build automation工具(例如GNU makeninja)。

请注意,编码约定和样式在 C 中非常重要(例如,参见 this)。

PS。您可能会考虑在您的笔记本电脑上安装一些Linux distribution,它对学生和开发人员非常友好,并且主要由free software 组成(一些对新手和/或专家C 开发人员非常有帮助,作为工具和示例)。您还应该阅读(以获得灵感)一些现有 free software 项目的源代码(例如在 github 上)。

【讨论】:

  • 我使用 gcc 模板、minGW 编译器和 GNU 调试器。我添加了您推荐的那些行,并且效果很好,谢谢!
  • 我建议您在笔记本电脑上安装 Linux。
  • 调试器和 git 是我在 C# 课上越来越喜欢的东西,我只是需要一些时间来了解 C 没有笔记本电脑,但我已经安装了 linux 环境
  • Linux 与什么有什么关系? “开发人员友好”......是的。 15 年来我几乎没有接触过 Linux,而且我几乎完全专注于 C 编程。请保持建议客观。工具推荐在这里也是题外话。
  • Linux 的大部分程序都是用 C 语言编写的免费软件,因此人们可以一目了然。 C 标准库和 Linux 内核也是免费软件(与 Windows 不同),您也可以查看它。 valgrind 在 Linux 上运行良好(但在 Windows 上可能不行)。
猜你喜欢
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 2021-10-07
  • 1970-01-01
相关资源
最近更新 更多