0

私はこのクロスプラットフォームのことには本当に慣れていないので、控えめに言っても、ウィンドウを扱うのは嫌いですが、ユニではそうしなければなりません:(

とにかく、私は Linux と Windows で作業したいほとんどすべてのものを持っていますが、それらを組み合わせて 1 つのプログラムを作ろうとしています。これについて少し検索しましたが、解決策が見つかりません。これが私が持っているものです-

#ifdef WIN32

#include <windows.h>
#include <process.h>
#pragma comment(lib, "wsock32.lib")

#else

#include <sys/socket.h>
#include <netdb.h>
void killMe();

#endif

Visual Studio は sys/socket を「インクルード」しようとしますが、これは Windows には存在しません。これを達成するための簡単な解決策があることを願っています。
コメントアウトするだけで問題なく動作し、printf() を使用してテストしているため、WIN32 が定義されていることがわかります。

4

1 に答える 1

1

マクロは_WIN32(先頭の下線)であり、ではありませんWIN32

#ifdef _WIN32

#include <windows.h>
#include <process.h>
#pragma comment(lib, "wsock32.lib")

#else

#include <sys/socket.h>
#include <netdb.h>
void killMe();

#endif

事前定義されたマクロを参照してください。


マクロWIN32#defineヘッダーファイルWinDef.h(31行目)のdにあります。これは、ヘッダーに含まれ、(おそらく)ファイルにヘッダーファイルが含まれているため、ソースでWIN32は使用できなかった理由を説明します。.c.hwindows.hWinDef.h.c

于 2012-09-19T09:33:01.360 に答える