玩宏

playing with Macros

内部“areaperi.h”

    #include <math.h>
        
    extern double peri;
    extern double area;
        
    #define AREA_C(x) (x*x* M_PI)
    #define PERI_C(x) (x*2*M_PI)
    
    #define PERI(length, depth, polygone){\
                if((polygone == "square")||(polygone == "rectangle"))\
                    peri = length * 2 + depth * 2;\
    }
    
    #define AREA(a,b,polygone){\
                if((polygone == "square")||(polygone == "rectangle"))\
                    area = a * b;\
                else if(polygone == "triangle")\
                    area = a * b / 2;\
    }

内部“areaperi.c”

    #include "areaperi.h"
    #include <stdio.h>
    
    
    int main(){
        double Carea = AREA_C(3);
        double Cperi = PERI_C(3);
        printf("area: %.2lf\n", Carea);
        printf("peri: %.2lf\n", Cperi);
        AREA(2,2,"square");
        printf("%.2lf\n", area);
    
        return 0;
    }

嗨,正在尝试使用宏和存储 class。但是我遇到了一个错误。这段代码并不意味着高效,它只是一个练习

错误

areaperi.h:14:28: 警告:反斜杠换行符在文件末尾 #define AREA(a,b,polygone){\

C:\Users\elena\AppData\Local\Temp\ccyOjbOH.o:areaperi.c:(.text+0x52): 未定义对 area' C:\Users\elena\AppData\Local\Temp\ccyOjbOH.o:areaperi.c:(.text+0x58): undefined reference to 区域的引用' collect2.exe:错误:ld 返回了 1 个退出状态

头文件

#include <math.h>

extern double peri;
extern double area;

#define AREA_C(x) (x*x* M_PI)
#define PERI_C(x) (x*2*M_PI)

#define PERI(length, depth, polygone){\
            if((polygone == "square")||(polygone == "rectangle"))\
                peri = length * 2 + depth * 2;\
}

#define AREA(a,b,poly){\
            if((poly == "square")||(poly == "rectangle"))\
                area = a * b;\
            else if(poly == "triangle")\
                area = a * b / 2;\
                puts("");\
}

file.c

#include "areaperi.h"
#include <stdio.h>

double area;
double peri;

int main(){
    double Carea = AREA_C(3);
    double Cperi = PERI_C(3);
    printf("area: %.2lf\n", Carea);
    printf("peri: %.2lf\n", Cperi);
    AREA(2,2,"square");
    printf("Area of the square: %.2lf\n", area);

    return 0;
}

错误

after having DEFINED the variable I got rid of the main error, but there was still the "24: warning: backslash-newline at end of file", with that one I just added puts(""); and fix it.

如果想了解有关该错误的更多信息,我会在以下位置找到答案:this stock overflow page