sách gpt4 ai đã đi

C 定义/全局变量依赖于其他东西

In lại 作者:行者123 更新时间:2023-11-30 19:05:20 31 4
mua khóa gpt4 Nike

我正在为大学用 C 语言编写一个小游戏,但我陷入了困境。我(在头文件中)有这个结构:

typedef struct{

game_element field[MAX_ROWS][MAX_COLUMNS];
int n;
int m;

}battlefield;

我想将全局 MAXBOMBS 值设置为 (n*m)/100。 (上面结构体的 n 和 m 字段)。我尝试定义如下:

#define MAXBOMBS (n*m)/100

但是我在其他一些函数中调用它时遇到了错误。有没有办法做到这一点?

1 Câu trả lời

源代码中的宏被预处理器替换。因此,无论您在哪里使用 MAXBOMBS,它们实际上都会被 (n*m)/100 取代。这当然是不正确的,除非您碰巧在作用域中有两个名为 Ntôi 的变量。但它不会是您想要的结构中的任何 N hoặc tôi.

您可以通过两种方式解决这个问题:使用类似函数的宏

#define MAXBOMBS(s) (((s).n * (s).m) / 100)

你可以像这样使用它

battlefield f;
// Code that initializes the n and m members
some_function(MAXBOMBS(f));

或者您创建一个实际的函数,该函数采用battlefield结构作为参数,并进行所需的计算并返回结果:

static inline int maxbombs(battlefield bf)
{
return (bf.n * bf.m) / 100;
}

我推荐使用函数的解决方案。

关于C 定义/全局变量依赖于其他东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075542/

31 4 0
Bài viết được đề xuất: c - ARM Cortex 上的 super 简单 Tasker
Bài viết được đề xuất: c - 填充指向整数的指针数组
Bài viết được đề xuất: c# - 在构造函数中创建的对象变为空
Bài viết được đề xuất: c# - Signalr - 无法读取服务器上的查询字符串
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com