fen*_*rbb 12 c++ header global-variables
我有一些代码分布在三个文件中,我想使用第四个"gloabls"文件来存储一些物理常量,例如pi的值.这样可以避免重复定义pi = 4*atan(1.0).在探讨之后,我尝试过创建一个全局头文件:
/*globals.h*/
extern double g_pi;
Run Code Online (Sandbox Code Playgroud)
和一个全局cpp文件:
/*globals.cpp*/
#include "math.h"
#include "globals.h"
double g_pi = 4*atan(1.0);
Run Code Online (Sandbox Code Playgroud)
然后我将这些文件包含在我的主文件中:
/*mainFile.cpp*/
//Include math and other libraries
#include globals.h"
int main() {
/*
....
*/
double x = 2*g_pi
/*
....
*/
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个未定义的g_pi参考错误.我在Ubuntu上使用g ++编译器.希望它是一个简单的修复!非常感谢您的建议.如果需要更多细节,我很乐意为他们提供.
dra*_*hnr 16
你可以简单地使用include中的M_PI(还有其他常量).
编辑:您的设置是正确的.我得到了一个有效的例子:
globals.h
extern double g_tst;
Run Code Online (Sandbox Code Playgroud)
globals.cpp
#include "globals.h"
double g_tst = 4.0;
Run Code Online (Sandbox Code Playgroud)
main.cpp中
#include "globals.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
fprintf (stderr, "g_tst = %lf \n", g_tst);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题出在您的构建系统中
见维基百科
小智 6
我认为问题是你有#include gobals.h而不是#include globals.h.这将为您提供未定义的引用,因为它不插入globals.h.当C++预编译器找不到头文件时,它不会失败.相反,您在编译时会收到未定义的引用消息.
| 归档时间: |
|
| 查看次数: |
24034 次 |
| 最近记录: |