掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.24872

マルチプラットフォーム
投稿者---モーニ(2005/12/19 20:13:29)


データを受信したり、ポートをオープンしたりするプログラムを作っているのですが、いまいちやり方がわかりません。

例えば、
WindowsとLinuxのプラットフォームで

ポートをオープンするのは、
Windows→CreateFile
Linux→opne

受信する関数
Windows→ReadFile
Linux→read

などですが、
これを#ifdefを使ってプラットフォームごとに制御したいのです。

でも、わからないことは、
文inlucdeの書き方です。

どこで、
#include <windows.h>

#include <fcntl.h>
を宣言するのか分かりません。

ファイルのはじめに、宣言すると、
Windows上でコンパイルすると#include <fcntl.h>がエラーになるし
Linux上でも、#include <windows.h>がエラーになります。
どういた方法でやればいいのでしょうか。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:マルチプラットフォーム 24873 επιστημη 2005/12/19 20:27:01


No.24873

Re:マルチプラットフォーム
投稿者---επιστημη(2005/12/19 20:27:01)


>どこで、
>#include <windows.h>
>と
>#include <fcntl.h>
>を宣言するのか分かりません。
>
>ファイルのはじめに、宣言すると、
>Windows上でコンパイルすると#include <fcntl.h>がエラーになるし
>Linux上でも、#include <windows.h>がエラーになります。
>どういた方法でやればいいのでしょうか。

#if defined(WINDOWS)
#include <windows.h>
#elif defined(UNIX)
#include <fcntl.h>
#else
#error WINDOWS or UNIX should be defined!
#endif



この投稿にコメントする

削除パスワード

No.24882

Re:マルチプラットフォーム
投稿者---モーニ(2005/12/20 12:26:50)


επιστημηさん、書き込みありがとうございます。



を試しているのですが、
例えば、
グローバル変数や、構造体などは、
今までは、Windows上だけだたので宣言は一回で済んだのですが、
マルチプラットフォームにすると、2回宣言しなくてはいけないのでしょうか?

#if defined(WINDOWS)
#include <windows.h>

int aaa;グローバル変数
typedef struct {
void* one;
void* two;
void* three;
} THPARAM;

#elif defined(UNIX)
#include <fcntl.h>

int aaa;グローバル変数
typedef struct {
void* one;
void* two;
void* three;
} THPARAM;

#endif


また、こう書いても、構造体が宣言されていないとエラー文がでます。


この投稿にコメントする

削除パスワード

No.24884

Re:マルチプラットフォーム
投稿者---YuO(2005/12/20 12:56:12)


see) 【掲示板利用宣言】
>ソースの添付は「HTML変換ツール」で字下げします。


>グローバル変数や、構造体などは、
>今までは、Windows上だけだたので宣言は一回で済んだのですが、
>マルチプラットフォームにすると、2回宣言しなくてはいけないのでしょうか?

プラットフォームに依存するものは2回宣言する必要がありますし,
依存しない物は1回で良いです。

#if defined(WINDOW)
#include <windows.h>
#elif defined(UNIX)
#include <fcntl.h>
#endif

int aaa;
typedef struct {
    void * one;
    void * two;
    void * three;
} THPARAM;



>また、こう書いても、構造体が宣言されていないとエラー文がでます。

問題点はその通りでは?
単に,構造体を宣言していないか,宣言しているファイルをインクルードしていないか,
名前を間違っているか,だと思います。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧