龍神録プログラミングの掲載ミス?それとも私の勘違い?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sh

龍神録プログラミングの掲載ミス?それとも私の勘違い?

#1

投稿記事 by sh » 14年前

http://dixq.net/rp/5.html

このページが理解できません。


・他のファイルで定義した関数はメインファイルではextern宣言する必要がある。

て書いてありますよね。

メインファイルからは
#define GLOBAL_INSTANCE
#include "../include/GV.h"
としてGV.hを取り込みます。
更にその中のfunction.hを取り込みます。
このときGLOBAL_INSTANCE が定義されていますから

#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif

より
GLOBALは空白です。

--function.h変更--

//graph.cpp
//描画メイン
GLOBAL void graph_main();

//key.cpp
//現在のキー入力処理を行う
GLOBAL int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
GLOBAL int CheckStateKey(unsigned char Handle);

//laod.cpp
//データのロード
GLOBAL void load();

というソースでは、

>>メインファイルではextern宣言する必要がある。


が満たされていない気がします。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 龍神録プログラミングの掲載ミス?それとも私の勘違い?

#2

投稿記事 by Dixq (管理人) » 14年前

不適切な方法について言及するのもなんですが・・・、
一応変数はexternしないと使えませんが、関数はstaticではない場合、プロトタイプ宣言してあれば他のファイルでも使えます。
また、館の設計上、main.cppからの呼び出しで定義している物が多いですが、
関数定義や変数定義はどこでやっても構いません。
少し記述を修正しました。

sh

Re: 龍神録プログラミングの掲載ミス?それとも私の勘違い?

#3

投稿記事 by sh » 14年前

解答ありがとうございました。
そもそもGLOBALをつける必要すらないのですね。

閉鎖

“C言語何でも質問掲示板” へ戻る