gpt4 book ai didi

c++ - 无法声明和识别全局函数

转载 作者:太空狗 更新时间:2023-10-29 21:30:30 24 4
gpt4 key购买 nike

我已经创建了一些数学函数,它们将在 main() 中使用,并由多个宿主类中的成员函数使用。我原以为将这些数学函数设为全局范围最简单,但我不确定该怎么做。

我目前将所有函数放在一个名为 Rdraws.cpp 的文件中,原型(prototype)放在 Rdraws.h 中。即使有所有的 #includesexterns,我在 main() 中的第一个函数调用时遇到“找不到符号”编译器错误。

这是我所拥有的:

// Rdraws.cpp
#include <cstdlib>
using namespace std;
#include <cmath>

#include "Rdraws.h"
#include "rng.h"

extern RNG rgen // this is the PRNG used in the simulation; global scope

void rmultinom( double p_trans[], int numTrials, int numTrans, int numEachTrans[] )
{ // function 1 def
}

void rmultinom( const double p_trans[], const int numTrials, int numTrans, int numEachTrans[])
{ // function 2 def
}

int rbinom( int nTrials, double pLeaving )
{ // function 3 def
}

// Rdraws.h

#ifndef RDRAWS
#define RDRAWS

void rmultinom( double[], int, int, int[] );
void rmultinom( const double[], const int, int, int[] );
int rbinom( int, double );

#endif

// main.cpp
...
#include "Rdraws.h"
...

extern void rmultinom(double p_trans[], int numTrials, int numTrans, int numEachTrans[]);
extern void rmultinom(const double p_trans[], const int numTrials, int numTrans, int numEachTrans[]);
extern int rbinom( int n, double p );

RNG rgen; // global PRNG object created for simulation

int main() { ... }

我是编程新手。如果有一种更聪明的方法来做到这一点,我很想知道。


更新

我是个白痴,没有意识到我的编译器中还没有包含 Rdraws.cpp。正如张贴者所指出的,我也忘记了分号。

如果可以改进此处概述的方法,我将不胜感激。

最佳答案

您使用的是哪个编译器?您需要先将所有源文件编译成目标文件,然后将所有目标文件链接在一起。

例子:

g++ -c -Wall -O2 main.cpp
g++ -c -Wall -O2 Rdraws.cpp

然后获取可执行文件...

g++ -s main.o Rdraws.o

关于c++ - 无法声明和识别全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com