首页
学习
活动
专区
圈层
工具
发布

玩宏
EN

Stack Overflow用户
提问于 2021-08-29 12:24:04
回答 1查看 66关注 0票数 0

在“区域”内

代码语言:javascript
复制
    #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;\
    }

在“区域”内

代码语言:javascript
复制
    #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;
    }

嗨,试着玩宏和存储类。但我面临一个错误。这段代码不是为了提高效率,它只是一个练习。

误差

areaperi.h:14:28:警告:反斜杠-文件末尾的换行符#定义区域(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区域的收藏品2.exe的引用:错误: ld返回1退出状态

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-29 13:07:47

头文件

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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;
}

误差

在定义了变量之后,消除了主要错误,但是仍然存在"24: warning: backslash-newline at end of file",使用该变量,我只添加了puts("");并修复了它。

如果想了解更多关于该错误的信息,我可以在以下网站找到答案:this stock overflow page

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68972849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档