Я обычно объявляю переменную в oracle-pro * c / c ++
VARCHAR myvar[25];
После прекомпиляции мой файл меняется на вот так
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
struct { unsigned short len; unsigned char arr[25]; } myvar;
Поскольку typedef указан для varchar
когда мы используем varchar myvar[25]
заявление,
myvar[25]
?arr[1]
в выражении typedef изменено на arr[25]
во второй строке?Из показанного вами предварительно скомпилированного кода я бы сказал, что
VARCHAR myvar[25];
интерпретируется как этот SQL
myvar varchar(25)
что также генерируется, обратите внимание char arr[25]
struct { unsigned short len; unsigned char arr[25]; } myvar;
myvar
это объект, который резервирует память для массива для символов myvar.arr[25]
и длина строки myvar.len
, Что еще нужно?Пример:
void PrintVarChar(VARCHAR * vcPtr) {
for(unsigned short i; i < vcPtr->len; ++i) {
PrintChar(vcPtr->arr[i]);
}
}
Вызывается так:
PrintVarChar((VARCHAR*)&myvar);