Как определить несколько #define с одним значением присваивания в C - PullRequest
1 голос
/ 17 июня 2020

Я нашел связанный вопрос о Как мне # определить несколько значений C / C ++ . Но я не это ищу. Вместо этого я хочу сделать наоборот.

Мы можем просто назначить что-то вроде этого

int a,b,c,d,e;
a = b = c = d = e = 5;
printf("Value %d",e);

Но я ищу, как объединить определение ниже в одну строку , задано фиксированное значение для назначения.

#define SIZE_OF_NODE_ADD   4
#define SIZE_OF_KEY_ADD    4
#define SIZE_OF_ID_ADD     4
#define SIZE_OF_PW_ADD     4

Возможно ли это сделать? что-то вроде

#define SIZE_OF_NODE_ADD = SIZE_OF_KEY_ADD = SIZE_OF_ID_ADD = SIZE_OF_PW_ADD = 4
/* The syntax is wrong, I just emphasize for easier understanding what I am looking for*/  

Ответы [ 2 ]

3 голосов
/ 17 июня 2020

Что ж, операторы #define могут обрабатывать несколько строк с использованием '\' в конце строки без каких-либо других символов рядом, поэтому вы можете создавать причудливые МАКРОСЫ ( Многострочные директивы DEFINE? ). Но простое решение вашей проблемы может заключаться в использовании эталонного определения, поэтому вам просто нужно изменить его, чтобы изменить другие значения.

#define REFERENCE_VALUE 4

#define SIZE_OF_NODE_ADD   REFERENCE_VALUE
#define SIZE_OF_KEY_ADD    REFERENCE_VALUE
#define SIZE_OF_ID_ADD     REFERENCE_VALUE
#define SIZE_OF_PW_ADD     REFERENCE_VALUE

Помните, что REFERENCE_VALUE должен быть перед его использованием в файл, иначе он не будет компилироваться.

1 голос
/ 17 июня 2020

В стандарте C оператор препроцессора заканчивается новой строкой, поэтому вы должны сделать:

#define SIZE_OF_NODE_ADD   4
#define SIZE_OF_KEY_ADD    4
#define SIZE_OF_ID_ADD     4
#define SIZE_OF_PW_ADD     4

Оператор множественного определения не разрешен (и даже очень сложно читать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...