Объявите переменную и добавьте ее в массив во время компиляции - PullRequest
2 голосов
/ 01 апреля 2020

Я хотел бы получить макрос C (или несколько), который мог бы служить двум целям:

  • Объявить переменную const.
  • Добавьте эту переменную в массив.

То есть, если у меня есть этот

typedef struct {
  int port;
  int pin;
} pin_t; 

такой макрос

#define DEFINE_PIN(name, port, num)   

должно расшириться до чего-то подобного #define s, но это просто иллюстрация. То, что я хочу сделать sh, это, с одной стороны, определить штифт, который будет использоваться там, где это необходимо, а с другой стороны, иметь простой способ обойти все штыри, то есть для настройки аппаратного обеспечения gp ios.

1 Ответ

3 голосов
/ 01 апреля 2020

Ниже приведен заголовочный файл, содержащий определения, чтобы их можно было использовать в других единицах компиляции:

#include <stdio.h>

#ifndef header_constant
#define header_constant

typedef struct {
  int port;
  int pin;
} pin_t;

pin_t pinArray[100];

#define DEFINE_PIN(name, port, num,arrayPos) \
  const pin_t name = {port, num};\
  pinArray[arrayPos]= name;


#endif

Примечание: символ \ указывает компилятору продолжать использовать следующую строку как часть макрос.

Ниже приведена основная программа:

# include "headername.h"

void main(){
  DEFINE_PIN(pin1,1,2,0);
  DEFINE_PIN(pin2,3,4,1);
  DEFINE_PIN(pin3,6,5,2);
  printf("%d",pin2.pin);
}
...