プラットフォームに依存しないソケット ライブラリを作成しています。基本的なファイル構造は次のようになります。
source directory
|_________________________
| | |
v v v
header.hpp win32 linux
| |
v v
source.cpp source.cpp
ヘッダー ファイルには、#include
オペレーティング システム全体で共通の が含まれます。ソース ファイルの#include
プラットフォーム固有のライブラリ。
このようなプロジェクトを数多く構築してきましたが、ソケットの問題に直面しています。関数パラメータのデフォルト値を指定しているため、、、などのヘッダー ファイルで使用header.h
するプラットフォーム固有のライブラリが必要です。#defines
SOCK_STREAM
AF_INET
SOMAXCONN
現在、ヘッダー ファイルでステートメントを使用したくありません。#ifdef _WIN32
すべてのプラットフォーム固有のコードを別のフォルダーのソース ファイルに配置したいからです。
私は基本的に岩と固い場所の間で立ち往生していますか? #ifdef #includes
ヘッダーに依存する#defines
相互に排他的なデフォルトのパラメーター値を回避および指定していますか?