我最近开始编写C宏,下面的代码确实没有 将预期文本输出到屏幕。问题在于定义print_int,我想使用print_int宏作为带有所需文本的整数参数,并使用函数内部写入的任何文本(不在#define部分中)打印出整数值。代码不会打印出来" Total is"文字到屏幕。我该如何更正代码?
#include <stdio.h>
#define print_int(integ, a) printf("%d", a)
#define read(j) scanf("%d", &j)
#define print_free(s) printf(s)
int main(int argc, char *argv[]) {
_add_();
}
_add_()
{
int c, j, total;
print_free("Enter first number: ");
read(c);
print_free("Enter second number: ");
read(j);
total = c + j;
print_int("Total is %d", total);
}
答案 0 :(得分:0)
从
更改print_int
的宏定义
#define print_int(integ, a) printf("%d", a)
到
#define print_int(integ, a) printf(integ, a)
BTW,函数_add
在第一次调用之前应该有一个返回类型和一个声明,否则它将调用未定义的行为。
答案 1 :(得分:-1)
为什么不在宏定义中包含“Total is”,然后删除integ
,这样您只需要传递1个元素。
#define print_int(a) printf("Total is %d", a)
print_int(total);
旁注,我建议您编辑_add_
功能。
_varName_
格式。避免误解。良好的编码实践通常是在main()
之前声明函数(还没有函数定义),然后在main()
之后提供定义。像这样的东西:
void vAdd(); //declaration
int main(){
/*code*/
}
void vAdd() //definition
{
/*code*/
}