gpt4 book ai didi

c - (宏创建)C 中的语法错误

转载 作者:行者123 更新时间:2023-11-30 14:49:33 25 4
gpt4 key购买 nike

我已经为作业创建了宏,但找不到运行程序时遇到的语法错误。任何想法将不胜感激,谢谢。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define ODD(X) ((X) & 01)
#define BITON(X,N) (((X) >> N) & 01)
#define ALLON(X,S,E) (((X) & ((((int) pow(2,(E-S))-1) << (E-S))) ^ (((int) pow(2,E-S)-1) << (E-S)))
//-----------------------------------------------------------------------------
int main(void) {

unsigned int U1,BitNumber,Start,End;

printf("Enter an integer : ");
scanf("%ud",&U1);
printf("%u is %s\n",U1,ODD(U1)?"odd":"even");

printf("Enter an integer and a bit number : ");
scanf("%u %d",&U1,&BitNumber);
printf("%u has bit %d %s\n",U1,BitNumber,BITON(U1,BitNumber)?"on":"off");

printf("Enter an integer, start and end bit numbers : ");
scanf("%u %u %u",&U1,&Start,&End);
printf("%u has %s those bits on\n",U1,ALLON(U1,Start,End)?"all":"not all");

return(EXIT_SUCCESS);
}

//-----------------------------------------------------------------------------

错误:

BitOps.c: In function ‘main’:
BitOps.c:23:77: error: expected ‘)’ before ‘;’ token
printf("%u has %s those bits on\n",U1,ALLON(U1,Start,End)?"all":"not all");
^
BitOps.c:26:1: error: expected ‘;’ before ‘}’ token
}

最佳答案

ALLON 的宏定义中有一个额外的左括号。编译器无法确定它是错误的,直到到达使用 ALLON 的行末尾的分号,因此错误消息提示该行(这很好)而不是定义ALLON,但 ALLON 的定义就是问题所在。

关于c - (宏创建)C 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com