【问题标题】:Issue of 'Uncaught TypeError: Callback must be a function' using C++ in Atom editor在 Atom 编辑器中使用 C++ 的“未捕获的类型错误:回调必须是函数”问题
【发布时间】:2020-07-28 09:56:06
【问题描述】:

我正在使用 Atom 在 Mac 上编译和运行 C++ 代码,但是在简单程序上出现此错误。我是 C++ 新手。请帮忙!

注意:我可以在 Xcode 中运行它。

main.cpp 文件:

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

int main() {
  Cube c;

  c.setLength(3.48);
  double volume = c.getVolume();
  std::cout << "Volume: " << volume << std::endl;

  return 0;
}

Cube.h 文件:

#pragma once
class Cube {
  public:
    double getVolume();
    double getSurfaceArea();
    void setLength(double length);

  private:
    double length_;
};

Cube.cpp 文件:

#include "Cube.h"

double Cube::getVolume() {
  return length_ * length_ * length_;
}

double Cube::getSurfaceArea() {
  return 6 * length_ * length_;
}

void Cube::setLength(double length) {
  length_ = length;
}

【问题讨论】:

  • 您似乎将main.cpp 源文件构建为一个单独的程序,而没有cube.cpp 源文件或从它创建的任何目标文件。您应该对make 程序以及如何编写makefiles 来构建和链接多文件项目进行一些研究。
  • 另外,请花一些时间阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。最后请不要张贴文字图片。图片无法从顶部复制粘贴,无法在其中搜索文本,屏幕阅读器也无法处理(请阅读idownvotedbecau.se/imageofcode)。
  • 谢谢。对不起这个糟糕的问题,我会编辑成文字。
  • uncaught type error 似乎是一个编译器/插件错误。正如您所看到的“它已经被报告”,所以我认为您将不得不忍受它。
  • 不!不要包含 cpp 文件!您应该分别编译每个 .cpp 文件并将它们链接在一起。弄清楚如何配置 Atom 来代替。

标签: c++ atom-editor


【解决方案1】:

您需要一个真正的构建系统。 Atom-gpp 仅适用于单个 .cpp 文件。

我建议您在 CMake 上投入一些时间,它是(主要)用于 C 和 C++ 的现代构建系统。

根据您的项目,将以下内容放在 .cpp 文件旁边的 CMakeLists.txt 中:

cmake_minimum_required(VERSION 3.10)

project(course1)
add_executable(course1 main.cpp Cube.cpp)

这三行足以告诉 CMake 你想生成一个程序course1 由两个 .cpp 文件组成。 CMake 足够聪明,只编译您在运行之间实际更改的文件。

然后,您可以安装像 AtomBuild 这样的插件,它会为您检测 CMake 文件并添加构建和运行所需的集成。

或从终端调用 CMake:

$ cmake . # generates the build files
$ cmake --build . # actually builds

注意:您可能需要先安装 CMake,在 macOS 上,规范的安装方法是使用 Homebrew 包管理器:

$ brew install cmake

【讨论】:

  • 通过 Homebrew 安装 CMake 后,我可以与您联系吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 2018-12-18
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
相关资源
最近更新 更多