2012-03-10 5 views
3

学習を見るC.私が#include <stdio.h>と言うとき、それはstdio.hをデフォルトの場所から取得します...通常、includeという作業ディレクトリ内のディレクトリです。実際にファイルstdio.hをどうやって取得するのですか? .hファイルの束をダウンロードしてインクルードディレクトリ内のプロジェクトからプロジェクトに移動する必要がありますか?私はtest.cファイルで次のようにしました。私はmake testを実行し、バイナリを出力しました。 ./testを実行したとき、私は画面上にこんにちはのプリントを見ませんでした。私はstdio.hライブラリが見つからないため出力が見えないと思っていました。しかし、再度、stdioでより大きい、またはより小さい符号を削除すると、コンパイラはエラーを表示します。何か案は?cプログラムを実行する - stdio.hどこで入手できますか?

私はこれをコマンドラインから実行しているMacにあります。私はGNU Make 3.81を使用しています。 I386-リンゴ-darwin10.0のために構築されたこのプログラムは、

#include <stdio.h> 

main() 
{ 
    printf("hello"); 
} 

は編集:私は...主な機能のためのデータ型を含めるようにして、私はまだ同じ結果を得る0を返すように自分のコードを更新したエラーなしでコンパイル./testファイルを実行すると画面上に何も印刷されません。

#include <stdio.h> 

int main() 
{ 
    printf("hello"); 
    return 0; 
} 

更新: 私はそれが動作printf関数の内部で\ nを追加した場合!これは動作します:あなたがファイルを持っていなかった場合は、コンパイルエラーを取得したい

#include <stdio.h> 

    int main() 
    { 
     printf("hello\n"); 
     return 0; 
    } 
+1

これまで出力が得られていなかったとは思えません。長いプロンプト?./テストを実行した後、シェルプロンプトの左側に "hello"を探しましたか? – alexis

+1

元のコードをもう一度コンパイルして、これを試してください: './test; echo Done' – alexis

答えて

1

あなたのコードは、標準のヘッダファイル<stdio.h>が来るんどこかを知りたい場合は、適切なフラグを使用して、コンパイラを実行することができ、好ましく

printf("hello\n"); 

または

puts("hello"); 

を持つ必要があります。それはgccであれば、Pedantically、標準ヘッダファイルがあってもファイルとして存在する必要はない

gcc -H -v -Wall hello.c -o hello 

でコンパイルしてみてください。標準では、ファイルシステムにアクセスせずに(例えば、コンパイラ内の内部リソースを検索することによって、またはデータベースから...)、#include <stdio.h>を処理する実装を許可しています。ほとんどの場合、ファイルシステム内の何かにアクセスするコンパイラはほとんどありません。

+0

@Basile_Starynkevitchあなたの問題を修正しました。 。 – user983223

+0

'-gall'を' gcc'(または 'clang')を使ってコンパイルするときには' -Wall'を使い、警告が出なくなるまでコードを修正することを強くお勧めします –

1

私の推測では、テキストが印刷されていますが、コンソールが表示される前に閉じています。

また、mainintを返します。正常終了を通知するにはreturn 0;を返す必要があります。

0

#include <header.h>は、角括弧を付けて、プロジェクトのサブディレクトリではなくコンパイラに知られている標準的なシステムの場所で検索します。 Unixシステム(Macを含む)では、stdio.hは通常/ usr/includeにあります。 #include "header.h"を使用する場合は、最初にサブディレクトリを検索してから<header.h>と同じ場所を検索します。

ただし、プログラムを実行するためにヘッダーを検索またはコピーする必要はありません。コンパイル時に読み込まれるため、./testにはまったく必要ありません。あなたのプログラムはうまくいくはずです。 "test"と入力するだけで、 "test"を入力することはできません。/ test "を実行してシステムコマンド" test "を取得しましたか?(示唆:プログラムの名前をtestにしないでください)

+0

最初の部分が間違っています –

+0

ちょうど修正それは、ありがとう、と思う。 – alexis

関連する問題