c++ - G++ 编译,可执行文件无法运行

标签 c++ linux ubuntu g++ ubuntu-14.04

我已经使用文本编辑器和 g++ 来编译和运行程序有一段时间了,但由于某种原因,它今天停止工作了。

它会编译没有错误,但是当我尝试运行可执行文件时,它不会执行任何操作。没有错误,没有输出。没有什么。这是我尝试运行的代码。

#include <iostream>
#include <fstream>

int main(){
// Initializes variable.
    int coordinatePair;
// Creates an object to use for the file.
    std::ofstream fileReader;
// Initiates a for-loop to get the value of each variable.
    for(int i = 0; i == 5; i++){
        std::cout << "Please enter the x-coordinate of your coordinate pair. " << std::endl << "You have " << 5 - i << " pairs left to enter." << std::endl;
        std::cin >> coordinatePair;
// Opens the file.
    fileReader.open("points.txt");
// Writes the user's values to the file.
    fileReader << coordinatePair << std::endl;
// Closes the file. 
    fileReader.close();
   }

}

在终端中,我创建了一个指向文件位置的目录...

cd ~/file location

然后我编译了它。

g++ points_out.cpp -o points_out

我尝试运行它。

./points_out

什么也没发生。没有错误消息,没有输出,什么也没有。虽然代码并不完全有效(我可能最好在 for 循环之外打开和关闭文件。)它仍然应该运行。我尝试输入错误的代码来看看会发生什么,它给了我正确的错误代码。我也尝试过

g++ -W -Werror points_out.cpp

...这也没有给我任何错误代码。我尝试为本周早些时候编译并运行的不同 .cpp 文件创建一个新目录,效果很好。由于某种原因,这个无法运行。我确信它正在编译,因为正在创建可执行文件。我也确信它没有运行,因为没有创建文本文件。

我成功编译并运行了这个东西一次,并且它在运行时创建了文本文件。这是我第一次遇到 g++ 问题。我到处寻找解决方案,但大多数遇到此问题的人都没有这样做

./points_out

MingW 存在部分问题或需要卸载 Avast。这些都不是我遇到的问题,所以我不知所措。

另外,不确定这是否有帮助,但正在运行

g++ --version

得到以下输出:

g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

最佳答案

对于不执行任何操作并成功完成的程序来说,这种行为是正常的。

C++ for 循环在进入循环体之前评估循环条件。当循环体完成时,将对可选的循环后表达式进行求值,并且程序返回到条件检查。

因此,您的代码将值 0 分配给 i,然后在允许进入循环之前测试是否 i == 5

尚不完全清楚您的意图,但您可能不是这个意思

for (int i = 0; i < 5; i++)

我们可以使用这段代码快速演示这一点:

#include <iostream>

int main() {
    std::cout << "original loop:\n";
    for (int i = 0; i == 5; i++)
        std::cout << i << '\n';
    std::cout << "corrected loop:\n";
    for (int i = 0; i < 5; i++)
        std::cout << i << '\n';
}

现场演示:http://ideone.com/O0Ul2z

-- 附录 --

大多数程序员都会考虑添加一些类似简单、无条件的内容

std::cout << "hello world\n";

在他们的程序顶部验证它是否没有运行或不工作。

关于c++ - G++ 编译,可执行文件无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801073/

相关文章:

c++ - 模板特化

c++ - boost iostream问题

php - 删除 php 包时出错

android i/o 事件

swift - 为 Swift 添加对 32 位 Ubuntu 的支持

c++ - 带数据库的桌面应用程序 - 如何处理数据检索?

c++ - 从 map 中检索对象实例

Python 3.5 Asyncio 和多​​个 websocket 服务器

php - 致命的!用户 postgres 的身份验证失败,多个操作系统,没有任何工作

ubuntu - InfluxDB 恢复错误 : updating metadata on influxd service failed