首页 > 解决方案 > MacOS 10.14b / C++ 使用:找不到命令,怎么办?

问题描述

我是cpp的新手。我有一台装有 macos mojave 10.14 beta 的 macbook air,当我尝试按如下方式启动此命令时:

chmod +x start.cpp 
./start.cpp

我得到:

Errors:./start.cpp: line 2: using: command not found
./start.cpp: line 4: syntax error near unexpected token `('
./start.cpp: line 4: `int main()'

我也通过 VS Code 扩展和 xcode 扩展安装了 clang。

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!";
    return 0;
}

int age() {
int age;
cout << "Enter your age: ";
cin >> age;
if (age > 18) {
    cout << "You are a child" << endl; }
else {
    cout << "You are an adult" << endl; }

return 0; }

这是代码。我知道这些是非常基础的,而且很短,但为什么不运行。我修改了代码并在终端中运行它。

我感谢你的每一个小帮助。

编辑:IDE 没有显示任何错误。

标签: c++

解决方案


您需要先编译链接程序。C++不是脚本语言。源代码不能直接运行。它需要首先被翻译成机器码。

编译过程有几个步骤:

首先,预处理器对源文本进行宏扩展和类似操作。然后编译器将预处理的源代码翻译成汇编语言。然后汇编器将 asm 转换为机器代码,形成一个目标文件。然后链接器将多个目标文件链接到一个可执行程序或库中。

在简单的情况下,编译器“驱动程序”可以在幕后为您完成许多/大部分/所有这些步骤。但是它们仍然存在,并且在更高级的程序中,您经常需要控制其中的一些。

对于一个简单的单一源程序,您最需要的只是g++ -o start start.cpp将您的代码编译并链接到一个名为“start”的程序中,然后您可以运行该程序(假设您使用的是 GCC 编译器 - 存在替代方案,例如Windows 上的 clangclang++或 Microsofts cl.exe)。

顺便提一句; 阅读您的编译器及其选项。这真的很重要。上述命令行生成程序的调试版本,适合调试,但速度较慢。要进行发布(快速)构建,您需要传递选项(我什至没有触及您需要/应该了解的编译器/链接器的表面)。由于您是新手,这里有一些基本的推荐选项可以传递给编译器以帮助您更快地发现错误:(-Wall -Wextra -Werror并添加-O2or-O3以启用优化并使您的程序快速运行(但也很难调试在调试器中 - 您必须了解的另一个工具))。


推荐阅读