簡體   English   中英

為什么我沒有得到非常簡單的Hello World程序的輸出?

[英]Why do I get no output for very simple Hello World program?

我想知道為什么我的C程序不打印任何信息。 我是100%的編程新手,過去幾周我已經能夠在Ruby和Python中學到一些東西,但是我對C的東西無處可去。 這是每個人首先學習的總基線,簡單程序:

#include <stdio.h>

int main()

    {
        printf("Hello World\n");
        return 0;
    }

所以我已經寫了,我保存為hello.c。 現在我cd到它所在的目錄,然后我嘗試

gcc hello.c

沒有任何反應 - 沒有錯誤,沒有任何錯誤。 如果我寫的話

gcc hello.c -o hello

一個新的可執行文件被寫入我的目錄,當我打開它時,它看起來像普通的命令行,並在那里寫了“Hello World”,正如我第一次在終端中所期望的那樣。

我也試過讓hello.c成為一個可執行文件,但是當我這樣做時,我得到了

syntax error near unexpected token `('
`int main()'

當你輸入

gcc hello.c

沒有任何反應,這是可以預期的。 或者更確切地說,GCC將使用默認名稱編譯可執行文件,對我來說這是一個a.out 如果我在命令行輸入./a.out ,我會看到輸出。

我認為從你的Ruby / Python背景中可能會有一個稍大的概念問題。 Ruby和Python是(通常)解釋語言,這意味着當您創建腳本文件時,您可以將其標記為可執行文件,並且通過一些魔術操作系統將啟動一個程序來讀取文件並為您執行它們。 但是,C是編譯的。 因此,當您運行GCC時,它將獲取源文件並將其轉換為可執行文件,具有默認名稱或指定名稱。 此時,除非編譯過程出現問題,否則不會期望看到任何輸出。 然后你可以運行./hello ,它是一個可執行文件,並查看你的輸出。

這也解釋了為什么你不能將hello.c標記為可執行文件並運行它。 它需要首先編譯成可執行文件。 看起來系統假裝它是一個shell腳本,它不是,並且給你一個語法錯誤。

gcc hello.c將生成一個名為a.out的文件
gcc hello.c -o hello將生成一個名為hello的文件

這些是可執行文件,您需要執行/運行這些文件才能獲得輸出。

運行這些

./a.out./hello

gcc hello.c -o hello指定要創建名為hello.exe的可執行文件。

您必須編譯所有C文件,然后運行可執行文件以運行該程序。 您實際上無法運行.c文件。 如果不指定exe,則只編譯。 你沒有錯誤的事實是一件好事,因為這意味着你的代碼是正確的! :)

第一次,您的可執行文件被命名為“a.out”(或Windows上的“a.exe”),這是gcc為可執行文件指定的歷史默認名稱。

你應該花點時間搞清楚源和可執行文件之間的區別,以及開放和執行之間的區別......

歡迎使用編程和Stack Overflow!

gcc hello.c

編譯文件並生成可執行文件'a.out',但不執行它。 這就是為什么你的命令行沒有發生任何事情。
要開始執行,您必須輸入:

./a.out

正如你對“你好”的說法一樣,如果我理解正確的話。
你必須學習編譯,鏈接和執行之間的區別,如果你想用C編程,找到一個好的初學者的書或教程,這是值得的!
干杯!

你得到了

syntax error near unexpected token `('
`int main()'

在hello.c源文件上設置保護並嘗試運行它時出錯。

使用gcc將.c源文件轉換為可以運行的二進制程序。

gcc -o hello hello.c

我使用的訂單並不重要。 我只是習慣於編譯這種方式。 你用這種方式編譯

gcc hello.c -o hello

這很好。

成功的編譯和鏈接創建了一個名為hello的輸出文件,這是您要運行的

./hello

您是否嘗試過包含#include<conio.h>並在return 0;之前包含getch() return 0; 顯示終端窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM