ソースコードマップ

  基本構成



SrcMap.cpp
  
// *****************************************************
// 関数ブロックの外は
// 便宜上「グローバルエリア」と呼ぶ事にします
// *****************************************************


// *****************************************************
// 一番上位に記述されるプロックを
// 便宜上「関数ブロック」と呼ぶ事にします
// ( ※ main関数はエントリポイントです )
// *****************************************************
int main()
{
	// **********************************************
	// 関数ブロック内は
	// 便宜上「ローカルエリア」と呼ぶ事にします
	// **********************************************

	return 0;
}
// *****************************************************
// ここも「グローバルエリア」ですが
// ここより前方にある関数ブロックからは参照できません
// *****************************************************
  



  二つのソースコード



1つのプロジェクトに2つのソースコードがありますが、現状では因果関係は存在しません

SrcMap.cpp
  
int main()
{
	return 0;
}
  

Function.cpp
  
int MyFunc()
{
	return 0;
}
  



  変数

nPublic は共有されます (同じメモリ位置を参照します)

SrcMap.cpp
  
static int nPrivate;
int nPublic;

int main()
{
	int nLocal;

	return 0;
}
  

Function.cpp
  
static int nPrivate;
extern int nPublic;

int MyFunc()
{
	int nLocal;

	return nPublic;
}
  



  関数呼び出し

SrcMap.cpp
  
static int nPrivate;
int nPublic;
// 関数宣言
// 使用する位置より前方のグローバルエリアに定義されておれば良い
// 関数の実体は、使用する位置より後方か別ソースコード内に記述する
int MyFunc();

int main()
{
	int nLocal;

	nPublic = 1;

	// 使用する位置
	nLocal = MyFunc();

	return 0;
}
  

Function.cpp
  
static int nPrivate;
extern int nPublic;

int MyFunc()
{
	int nLocal;

	nPublic++;

	return nPublic;
}
  



  ヘッダーファイル

SrcMap.h
  
// ソースコード毎にメモリに確保される変数
static int nPrivate;

#ifdef ENTRY_POINT
#define MY_EXTERN
#else
#define MY_EXTERN extern
#endif

// 各ソースコードで共有される変数
MY_EXTERN int nPublic;

// 関数宣言
int MyFunc();
  

SrcMap.cpp
  
#define ENTRY_POINT
#include "SrcMap.h"

int main()
{
	int nLocal;

	nPublic = 1;

	// 使用する位置
	nLocal = MyFunc();

	return 0;
}
  

Function.cpp
  
#include "SrcMap.h"

int MyFunc()
{
	int nLocal;

	nPublic++;

	return nPublic;
}
  



  ヘッダーファイルの二重呼び出しの対応

  
#ifndef SRCMAP

static int nPrivate;

#ifdef ENTRY_POINT
#define MY_EXTERN
#else
#define MY_EXTERN extern
#endif
MY_EXTERN int nPublic;

int MyFunc();

#define SRCMAP
#endif
  

  
#define ENTRY_POINT
#include "SrcMap.h"
#include "SrcMap.h"

int main()
{
	int nLocal;

	nLocal = MyFunc();

	return 0;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ