0

学校のプロジェクトで始めたのですが、プログラミングを始めたときに問題が発生しました。これは私のコードです(終わりには程遠い):

WSADATA wsaData; 
WORD wVersionRequested = MAKEWORD( 2, 2 ); 
int err = WSAStartup( wVersionRequested, &wsaData );
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

struct addrinfo *info; 
int ok = getaddrinfo("www.bt.se","80",NULL,&info);

if(ok!=0) { 
    WCHAR * error = gai_strerror(ok); 
    printf("%s\n",error); 
} else while(info->ai_family != AF_INET && info->ai_next != NULL) 
    info = info->ai_next;

ok = connect(s, info->ai_addr, info->ai_addrlen);

char * message = "GET / HTTP/1.1\r\nHOST: www.bt.se\r\n\r\n"; 
ok = send(s,message,strlen(message),0);

WSACleanup();

インクルード ファイルは「winsock2.h」と「Ws2tcpip.h」です。プログラムをコンパイルしようとすると、次の出力が得られました。

------ ビルド開始: プロジェクト: Ovning1、構成: Win32 のデバッグ ------

オーブン.c

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(16): 警告 C4013: 'printf' が定義されていません。extern が int を返すと仮定

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(22): エラー C2143: 構文エラー: ';' がありません 「タイプ」の前に

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): エラー C2065: 'メッセージ': 宣言されていない識別子

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): warning C4047: 'function' : 'const char *' は 'int' とは間接的なレベルが異なります

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): 警告 C4024: 'send': 仮パラメーターと実パラメーターの型が異なります 2

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): エラー C2065: 'メッセージ': 宣言されていない識別子

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): warning C4047: 'function' : 'const char *' は 'int' とは間接的なレベルが異なります

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): 警告 C4024: 'strlen': 仮パラメーターと実パラメーターの型が異なります 1

========== ビルド: 0 成功、1 失敗、0 最新、0 スキップ ==========

これらのエラーが発生する理由を知っている人はいますか?

4

4 に答える 4

2

エラー C2143: 構文エラー: ';' がありません 「タイプ」の前に

これが C で C++ でない場合char * message、ブロックの途中で宣言することはできません。すべての変数宣言は、ブロックの先頭にある必要があります。( の直後{)。

于 2011-02-07T21:10:53.823 に答える
2

stdio.hを含めていませんか、printf宣言はそのファイルにあります

于 2011-02-07T19:18:50.453 に答える
0

下部には、0 成功、1 失敗と表示されます。これは、1 つのファイルのビルドに失敗したことを意味します。右側をスキャンすると、ovning.c からのエラーと警告があります。各エラーを確認して修正することから始めます。

最初のエラーは、printf が定義されていないことです。明らかに、タイプミス、関数の欠落、インクルードの欠落があります。Tanuj が言うように、おそらく stdio.h で printf を使用したいので、include ステートメントを追加します。

次に、宣言されていない識別子に関する 2 つのメッセージがあります。繰り返しますが、インクルードが欠落している可能性があります。

于 2011-02-07T19:37:37.933 に答える
0

プラットフォーム SDK http://msdn.microsoft.com/en-us/library/ms740673.aspxにある必要があります

編集:他の回答が言うように-これは問題ではありません

于 2011-02-07T19:20:27.320 に答える