2017-02-22 12 views
0

Итак, у меня есть математический код, который объявляет тонну переменных с произвольным типом, чтобы можно было определить точность (double, quad и т. Д.). Для этого у меня есть файл заголовкаИспользование #define для установки типа переменных

input.h

PRECISION detg; 
    detg = 1.0+2; 

Где input.h входит в основной файл, как

#include<math.h> 
    #include<stdio.h> 
    #define PRECISION double 
    int main(){ 
     return 0; 
    } 

Составлено с GCC testEquations.c -o тест

Но компиляция не удалась и дает ошибку

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; 

Вопрос в том, почему PRECISION не заменяется двойным, как вы думаете, и должно быть причиной этой ошибки?

+1

Где вы укажете номер? Input.h'? –

+2

Замечание: лучше использовать 'typedef' для переменных типов, а не' # define'. – AntonH

+0

Да, это звучит как работа для typedef – brianxautumn

ответ

2

Невозможно установить detg = 1.0+2; вне функции. Либо напишите PRECISION detg = 1.0+2;, либо положите detg = 1.0+2; в свою основную функцию.

Смежные вопросы