C 使用#define设置变量类型
所以我有一个数学代码,它声明了大量任意类型的变量,这样就可以定义它的精度(double、quad等)。为此,我有一个头文件 输入.hC 使用#define设置变量类型,c,types,C,Types,所以我有一个数学代码,它声明了大量任意类型的变量,这样就可以定义它的精度(double、quad等)。为此,我有一个头文件 输入.h PRECISION detg; detg = 1.0+2; 其中input.h包含在主文件中,如 #include<math.h> #include<stdio.h> #define PRECISION double int main(){ return 0; }
PRECISION detg;
detg = 1.0+2;
其中input.h包含在主文件中,如
#include<math.h>
#include<stdio.h>
#define PRECISION double
int main(){
return 0;
}
我的问题是,为什么精度不能像你认为的那样被双精度所取代,为什么它会产生这个错误?你不能把
detg=1.0+2代码>函数外部。写入precisiondetg=1.0+2代码>或putdetg=1.0+2代码>在主函数中。您不能将detg=1.0+2代码>函数外部。写入precisiondetg=1.0+2代码>或putdetg=1.0+2代码>在你的主函数中。你在哪里包括输入.h
?旁注:最好对变量类型使用typedef
,而不是#define
。是的,这听起来像是解决你的问题的工作(或者至少是编译器所指的工作)不是因为PRECISION
没有替换为double,而是您试图在detg=1.0+2行中的函数之外使用赋值代码>。在头文件和头文件中实例化数据而不使用include-guard也是不好的做法。您还完全没有显示代码片段中实际包含的内容。您在哪里包含输入。h
?旁注:最好对变量类型使用typedef
,而不是#define
。是的,这听起来像是解决您的问题(或者至少是编译器所指的问题)的工作不是因为PRECISION
没有替换为double,而是您试图在detg=1.0+2行中的函数之外使用赋值代码>。在头文件和头文件中实例化数据而不使用include-guard也是不好的做法。您还完全无法在代码片段中显示实际包含的内容。
In file included from testEquations.c:16:0:
./GHG_Files/input.h:3:1: warning: data definition has no type or storage class
detg = 1.0+2;
^
./GHG_Files/input.h:3:1: warning: type defaults to ‘int’ in declaration of ‘detg’ [-Wimplicit-int]
./GHG_Files/input.h:3:1: error: conflicting types for ‘detg’
./GHG_Files/input.h:1:11: note: previous declaration of ‘detg’ was here
PRECISION detg;