- 此问题在此处已有答案**:
(39个答案)
14小时前关门了。
- IDE:**VS代码
- gcc版本:**8.1.0(x86_64-posix-seh-修订版本0,由MinGW-W64项目构建)
我在C语言中是新手,现在我有三个文件:
- 获取h段**
#ifndef _GETPARA_H_
#define _GETPARA_H_
extern double C;
extern double dEarthAngularVelocity;
...
extern void calParameter();
#endif
以及Get_para. c,它是Get_para. h的实现
#include <math.h>
#define _USE_MATH_DEFINES
#define pi M_PI
double C = 3e8;
double dEarthAngularVelocity = 7.29210e-5;
...
void calParameter(){
...
}
然后,我想在test. c中包含Get_para. h,并调用在Get_para. c中实现的calParameter函数
#include <stdio.h>
#include "Get_para.h"
int main(){
calParameter();
printf("%lf\n",dSemiMajorAxis);
}
我在VS中使用'run code',终端中的命令是:
if ($?) { gcc test.c -o test } ; if ($?) { .\test }
输出为:
C:\Users\bob\AppData\Local\Temp\ccuWLUIl.o:test.c:(.text+0xe): undefined reference to `calParameter'
C:\Users\bob\AppData\Local\Temp\ccuWLUIl.o:test.c:(.rdata$.refptr.dSemiMajorAxis[.refptr.dSemiMajorAxis]+0x0): undefined reference to `dSemiMajorAxis'
collect2.exe: error: ld returned 1 exit status
但我想只包括"Get_para.h",然后我就可以在"Get_para.c"中使用它们的实现。我在谷歌上搜索了这个,其他人的代码在我的计算机上不起作用。现在我猜问题是gcc的参数,但不知道它是什么,也不知道我需要知道什么C知识来解决这个问题。
1条答案
按热度按时间h5qlskok1#
您还必须编译函数的实现:
考虑学习构建系统,比如cmake。
要使这样的宏工作,它必须在任何包含之前定义。
一个二个一个一个
定义宏时,以
_
开头,后跟大写字母是无效的。此类标识符是保留的。例如,使用: