我想在MyTools.h
#ifndef _MYTOOLS_
#define _MYTOOLS_
typedef struct {
// const
double LN20;
double LN40;
// methods
double NoteToFrequency(int noteNumber);
} Tool;
extern const Tool tool;
#endif // !_MYTOOLS_
对于每个编译单元,只有Tool
的全局/ const /唯一实例。正是我想要的。
但是现在:我该如何定义它?在.h
我只宣布它。如何在.cpp
中定义它?尝试过像:
tool.LN20 = 1.34;
但当然它不起作用。方法的定义是什么?
答案 0 :(得分:-1)
extern没有定义它只是声明它的任何变量。您要实现的目标可以如下所示:
链接Global const object shared between compilation units解释了如何使用extern const
t.h文件
#ifndef _MYTOOLS_
#define _MYTOOLS_
struct Tool {
// const
double LN20;
double LN40;
double NoteToFrequency(int noteNumber);
} ;
extern const Tool tool ;
#endif // !_MYTOOLS_
t1.cpp
#include "t.h"
#include <stdio.h>
void use_tool()
{
printf("%f\n",tool.LN20);
printf("%f\n",tool.LN40);
return;
}
t2.cpp
#include "t.h"
#include <stdio.h>
const Tool tool = {.LN20 = 20.0, .LN40 = 30.2};
double Tool::NoteToFrequency(int noteNumber)
{
return 12.0;
}
void use1_tool()
{
printf("%f\n",tool.LN20);
printf("%f\n",tool.LN40);
return;
}
int main()
{
void use_tool();
use_tool();
use1_tool();
return 0;
}
希望这有帮助。