1

次のリンクにあるプログラムの機能を説明する必要があります。

main.c

csapp.c

csapp.h

Linuxで次のコードを次のようにコンパイルします。

................................................................... ここに画像の説明を入力_ ..........

(コンパイルが機能するには、3 つのファイルすべてが同じ作業ディレクトリにある必要があることに注意してください。)

そのコマンドは次のとおりです。 gcc main.c csapp.c

そのコマンドを実行すると、実行可能ファイルが取得されます。 a.out コンパイル エラーは発生しません。

その実行可能ファイルは、ここからダウンロードできます(そのファイルは必要ないと思います。また、そのファイルは実行しません)。

とにかく、プログラムをデバッグできれば、何が起こっているのかをよりよく理解できると思います。その結果、Visual Studio で C++ コンソールの空のコンソール プロジェクトを作成しました。そこに同じファイルを含めて、コンパイルできるようにしたいと思います。これまで C++ を使用したことがなく、ヘッダー ファイルを配置する場所がよくわかりません。これは、プログラムをコンパイルできるようにするために私が行ったことです。

ここに画像の説明を入力

そのようなファイルを配置すると、プログラムはコンパイルされません。

また、Linux 仮想マシンと同じように、すべてのファイルを同じディレクトリに配置しようとしました。

ここに画像の説明を入力

それもコンパイルされません。

そのプログラムをビジュアルスタジオでコンパイルするにはどうすればよいですか?

4

1 に答える 1

3

csapp.h を見ると、次のヘッダーをインクルードしようとしていることがわかります。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <setjmp.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <math.h>
#include <pthread.h>
#include <semaphore.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>

これらの一部は std C ヘッダーですが、その他は POSIX/Linux/UNIX スタイルのオペレーティング システム (たとえば、pthread.h) に固有のものです。Cygwinライブラリに対してコンパイルするなどの特別なことをしない限り、これらのライブラリを Windows または Visual Studio で使用することはできません。

プログラムが何をしているかを理解したい場合、できることはたくさんあります。まず、コードを読んで、それらの関数を文書化した man ページで呼び出す関数を調べます (gcc をお持ちの場合は、man もあると思いますか?) 次に、コンソールに出力して内容を把握することができます。gdb のようなデバッガーを使用してプログラムをステップ実行することもできます。VS デバッガーほど直感的ではありませんが、機能します...

于 2012-04-25T23:11:30.130 に答える