#define с несколькими значениями - C - PullRequest
0 голосов
/ 24 октября 2018

вопрос новичка:)

Как определить несколько значений, например:

#define TEST_STRING "AA" || "BB"

Основной код должен быть похож на это:

if ((strstr(STRING2COMPARE, TEST_STRING) != NULL)) {
    doSomething();}

Возможно, естьэто лучший способ.

Заранее спасибо :)

1 Ответ

0 голосов
/ 24 октября 2018

Сначала я думаю, что ваша идея заключалась в том, чтобы получить в TEST_STRING объединение двух строк.В C это будет (конкатенация неявная):

#define TEST_STRING ("AA" "BB")

Во-вторых, этот тест будет успешным во многих случаях, когда он не должен: "A", "B" или "ABB", например.

В-третьих, заглавные буквы STRING2COMPARE часто означают, что это определение.Вы хотите использовать обычную переменную, не так ли?

В заключение, как насчет этой реализации?

#define TEST_STRING_1 "AA"
#define TEST_STRING_2 "BB"

if ( strcmp(str2compare, TEST_STRING_1) == 0
     || strcmp(str2compare, TEST_STRING_2) == 0 ) {
    doSomething();
}
...