JS. получить несколько значений, используя идентификатор

cl

Я знаю, что вопрос явно упоминает gcc, но только для полноты здесь есть настройка для компиляторов Microsoft.

Использование массива с отрицательным размером typedef не убеждает cl , чтобы выплюнуть приличную ошибку. Он просто говорит error C2118: negative subscript. В этом отношении лучше всего подходит битовая область с нулевой шириной. Поскольку это подразумевает типизацию структуры, нам действительно нужно использовать уникальные имена типов. __LINE__ не разрезает горчицу; возможно иметь COMPILE_TIME_ASSERT() в той же строке в заголовке и исходном файле, и ваш компилятор сломается. __COUNTER__ приходит на помощь (и он был в gcc с 4.3).

#define CTASTR2(pre,post) pre ## post
#define CTASTR(pre,post) CTASTR2(pre,post)
#define STATIC_ASSERT(cond,msg) \
    typedef struct { int CTASTR(static_assertion_failed_,msg) : !!(cond); } \
        CTASTR(static_assertion_failed_,__COUNTER__)

Теперь

STATIC_ASSERT(sizeof(long)==7, use_another_compiler_luke)

в cl дает:

< blockquote>

error C2149: 'static_assertion_failed_use_another_compiler_luke': имя битового поля не может иметь нулевую ширину

Gcc также дает понятное сообщение:

error: zero width для бит-поля 'static_assertion_failed_use_another_compiler_luke'

-2
задан Cho 19 March 2019 в 14:49
поделиться

1 ответ

Я думаю, что у некоторых были проблемы с идентификаторами, имеющими пробелы / и т. Д. Между ними или что-то в этом роде.

Я нашел обходной путь для решения проблемы.

Только что использовали:

var name = "a" + target;
var nameVal = document.getElementById(name).value;

и т. Д.

0
ответ дан Cho 19 March 2019 в 14:49
поделиться
Другие вопросы по тегам:

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