Visual C++について質問です。変数の値により、インクルードするヘッダーファイルを変更することはできますか?もしできるようでしたら方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/10/04 22:19:25
  • 終了:2008/10/09 23:31:45

ベストアンサー

id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262008/10/04 23:36:59

ポイント100pt

>英語用出力文字定義ヘッダーや日本語用出力文字定義ヘッダーを用意して…

そういう場合はヘッダファイルではなく gettext 等で外部リソース化するのが一般的な手法かと思います。

id:harunoharuno

一般的な手法・・・勉強します。回答どうも有難うございました。

2008/10/09 23:26:31

その他の回答(2件)

id:YOSIZO No.1

YOSIZO回答回数64ベストアンサー獲得回数12008/10/04 22:49:45

ポイント100pt

ヘッダーを動的に変更して何がしたいか不明なのですが、基本的には出来ないと思ってください。

インクルードファイルはプリプロセッサで読み込まれるため、コンパイル以前に静的なコードとして展開されます。

つまり、変数の値(処理結果)によって読み込むヘッダーファイルを変更する事は出来ません。

関数の名前は同じだけど、変数の値によって結果を変えたいような場合はdll(ダイナミックリンクライブラリ)を使うか、オブジェクト指向的にFactoryMethodパターンあたりを使ってみてはどうでしょうか?


あなたが何をやりたいかによってアプローチは変わってきます。

まずは、質問の状況で何をしたいのかをハッキリできれば、もっと有意な回答が得られるかと思います。

id:harunoharuno

どうも有難うございます。

具体的には

初期化ファイルから言語設定を読み込み、

英語だったら、英語の出力文字を定義しているヘッダーを

日本語だったら日本語用の出力文字を定義しているヘッダーを

よめたら嬉しいなとおもって質問しました。

回答していただいた内容をもとに調べてみます。

追加情報などもありましたら是非勉強したいので

教えてください。宜しくお願いします。

デファインを同じ名前でつ

2008/10/04 23:01:20
id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262008/10/04 23:36:59ここでベストアンサー

ポイント100pt

>英語用出力文字定義ヘッダーや日本語用出力文字定義ヘッダーを用意して…

そういう場合はヘッダファイルではなく gettext 等で外部リソース化するのが一般的な手法かと思います。

id:harunoharuno

一般的な手法・・・勉強します。回答どうも有難うございました。

2008/10/09 23:26:31
id:angemaries No.3

angemaries回答回数80ベストアンサー獲得回数22008/10/05 00:36:22

ポイント100pt

先行の回答者が回答しているとおり、#includeはプリプロセッサで処理され

宣言部分がそのままインクルードファイルで置き換えられます。

ですので、#includeはどこにおいてもうごくはずです。

インクルードファイルの中身が定数ならNGですが、質問で書かれているように変数なら

下記のようなことができると思います。お試しください。

意味があるコードとは思えませんが。

if (b) {

#include "a.h"

} else {

#include "b.h"

}

しかも言語の違いはリソースで対応するのが一般的な方法です。

外部DLLを作成して、LoadStringしてください。

http://www.nitoyon.com/vc/reference/gui/resource.htm

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません