Макросоздание макросов в C?

Я совершенно не уверен, что это возможно, если один пользователь попытается получить всех пользователей, если только вы не используете firebase-admin. Хотя у меня есть идея, как это сделать, если вы пытаетесь получить список добавленных пользователей, являющихся другими пользователями. Итак, попробуйте сохранить другой список, когда новый пользователь входит в систему, добавьте данные пользователя в новый узел, такой как userList. И когда они вам понадобятся, звоните в этот узел. И в случае, если вы используете firebase-admin

admin.auth().listUsers(1000, nextPageToken)
    .then(function(listUsersResult) {

выдаст список. Вот ссылка. https://firebase.google.com/docs/auth/admin/manage-users#list_all_users

7
задан Brian Tompsett - 汤莱恩 5 February 2016 в 21:36
поделиться

5 ответов

Это невозможно в стандартном C.

6
ответ дан 6 December 2019 в 11:52
поделиться

Рассматривали ли вы использование макросов M4? Я думаю, что они доступны на большинстве платформ, поэтому это не должно быть ограничением.

M4 Страница GNU

5
ответ дан 6 December 2019 в 11:52
поделиться

Это невозможно, потому что макрос выполняется только один раз.

Это не означает, что вы не можете использовать другие макросы в своем макросе, но вы не можете использовать

#define TEST #define HALLO 33

int x = TEST;

и ожидать, что x будет 33 после этого! Вы бы получили синтаксическую ошибку из-за попытки

int x = #define HALLO 33;

Или, может быть, компилятор уже жалуется на #define в #define.

3
ответ дан 6 December 2019 в 11:52
поделиться

Попробуйте #define make_macro (name, ...) name # #_fn (name ## _ info, __VA_ARGS __) .

Используйте так:

make_macro(name1)
make_macro(name2,1)

, и это сгенерирует

name1_fn(name1_info)
name2_fn(name2_info,1)
0
ответ дан 6 December 2019 в 11:52
поделиться

Как все уже говорили, вы не можете делать именно то, что просите.

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

.c.pp:
   $(CPP) $< -o $@

Затем дайте вашему файлу расширение test.pp. Makefile запустит его один раз, чтобы сгенерировать файл .c, а затем обычный запуск файла .c запустит его второй раз.

Лично Я бы предпочел написать внешний сценарий на Perl или что-то еще, чтобы сгенерировать для меня код C; это немного чище, чем играть в игры с препроцессором C. Это зависит от того, о каком количестве кода мы говорим.

2
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: