extern int a; は、砕けた言い方をすると 変数aの実体はこのソース上には無いけれど(リンクするときには見つかるはずなので) このソース内で使いますという宣言し、変数の実体を作らない。 一方 extern int a = 1; では、上記の意味と違い、変数aが値1で初期化され実体化する。 77のソースを見てもらえば分かるとおり、main.c,rink.cで後者の宣言をしているため a,bがそれぞれ2つ実体化してしまう
externの意味はわかってもらえただろうか? 78のソースでは逆にどこにも実体が存在していないことになる ヒントというか回答だが extern int a; int a = 1; extern int a;を#include"rink.h"に置き換えると・・・・
if UCase(fileType) = UCase("cpp") then fileName = fileName + "h" elseif UCase(fileType) = UCase("h") then fileName = fileName + "cpp" else MsgBox("Unsupported file format: " + fileType) Exit Sub End If
fileName = LCase(fileName) 'first try lower case Documents.Open fileName if Err.Number <> 0 then Err.Clear fileName = UCase(fileName) 'try upper case Documents.Open fileName if Err.Number <> 0 then MsgBox Err.Description, 0 , "Error" exit sub End If End If
if Len(lookFor) > 0 then curLine = ActiveDocument.Selection.CurrentLine curCol = ActiveDocument.Selection.CurrentColumn lookForDef = "::" + lookFor ActiveDocument.Selection.FindText lookForDef, dsMatchCase if ActiveDocument.Selection = lookForDef then curLine = ActiveDocument.Selection.CurrentLine curCol = ActiveDocument.Selection.CurrentColumn - Len(ActiveDocument.Selection) End if ActiveDocument.Selection.Cancel ActiveDocument.Selection.MoveTo curLine, curCol ActiveDocument.Selection.FindText lookFor, dsMatchCase End if End Sub