ソースコードマップ


  基本構成




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;
}
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[cmaterial]
CCBot/2.0 (https://commoncrawl.org/faq/)
24/09/13 20:18:10
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube