Я запускаю sudo g ++ main.cpp, но он не запускает программу - PullRequest
1 голос
/ 27 апреля 2019

Я пытаюсь запустить программу из терминала на macOS.Я запускаю это:

sudo g++ main.cpp

, но он просто "пропускает" команду и не создает программу, как это

101:nrprim mac$ sudo g++ main.cpp 
101:nrprim mac$ 

Это код:

#include <iostream>
using namespace std;
bool divizibil(int n, int i){
    if (n%i==0) return 1; else return 0;
}

int numarDivizori(int n){
    int i, c=0;
    for (i=1; i<=n; i++)
        if (divizibil(n,i)) c++;
    return c;
}

void prim(int n){
    int c=0;
    c=numarDivizori(n);
    if (c>2) cout<<"Numarul nu e prim"; else
        cout<<"Numarul e prim\n";

}
int main() {
    int n;
    cout<<"n=";
    cin>>n;
    prim(n);
    return 0;
}

Я ожидал, что он выдаст

n =

и просто дождется ввода

Ответы [ 3 ]

3 голосов
/ 27 апреля 2019

Она собирает программу, вы должны увидеть ее как a.out в том же каталоге. Если вы хотите назвать его как-нибудь еще, используйте опцию -o, как это. Вы можете запустить программу, просто запустив этот a.out или именованный исполняемый файл.

c++ src.cpp -o myoutput

Кстати, я не думаю, что вам нужно sudo.

2 голосов
/ 27 апреля 2019

G ++ компилирует ваш код, который отличается от , выполняющего ваш код. Если вы введете ls в терминал, вы должны увидеть новый файл, который был создан G ++ путем компиляции исходного файла. Если вы запустите этот файл, то вы должны увидеть выполнение вашей программы.

Компиляция берет ваш исходный код и в основном переводит его с одного языка на другой. В этом случае G ++ компилирует ваш код из C ++ в двоичный язык, понятный машине. После компиляции результат сохраняется в файл. Этот файл часто является исполняемым файлом, который вы можете запустить, введя его имя в терминал. Например, если исполняемый файл a , вы наберете . / A (. / сообщает терминалу, что файл находится в текущем каталоге ).

РЕДАКТИРОВАТЬ: Кроме того, как уже говорили другие, вы, вероятно, не должны использовать sudo для чего-то вроде этого, поскольку это, скорее всего, не нужно и может быть опасно.

1 голос
/ 28 апреля 2019

Вы можете запустить его в одну строку следующим образом:

g++ file cpp && ./a.out

или удалить a.out после запуска:

g++ file.cpp && ./a.out && rm a.out

g++ file.cpp компилирует, связывает и создаетисполняемый файл a.out.Для запуска a.out вы просто ставите ./a.out.rm a.out во второй строке удаляет a.out.&& означает, что если предыдущая команда выполнена успешно, продолжите со следующей.

Еще одно примечание не нужно sudo при компиляции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...