给定以下代码片段:

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 15

typedef struct{
  int touchdowns;
  int interceptions;
  int tackles[MAX_SIZE + 1];        //this is the line in question
}stats;

向我提出的问题是,“为什么这条线[上面表示的]在可能的铲球数上加1?”
----不是人们为什么也想要,而是它是如何工作的。为什么它是有效的代码,换句话说,不一定是有效的逻辑。-澄清
我不知道如何详细回答这个问题。任何帮助都将不胜感激。

最佳答案

编译代码时,最大大小替换为100

int tackles[100 + 1];

这和
int tackles[101];

documentation
要定义预处理器宏,可以使用define。其格式为:
#define identifier replacement

当预处理器遇到此指令时,它将通过替换来替换代码其余部分中出现的任何标识符。这个替换可以是表达式、语句、块或任何简单的东西。预处理器不理解C++,它只是通过替换来替换任何标识符的出现。
#define TABLE_SIZE 100
int table1[TABLE_SIZE];
int table2[TABLE_SIZE];

在预处理器替换TABLE_SIZE之后,代码将等价于:
int table1[100];
int table2[100];

关于c - C符号常量+结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15044959/

10-11 18:04