Код межплатформенного запроса не компилируетсяC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Код межплатформенного запроса не компилируется

Сообщение Anonymous »

В Windows приведенный ниже код успешно компилируется:

Код: Выделить всё

SQLWCHAR *qry = nullptr;
qry = L"SELECT * FROM my_table;";
Однако в Linux с unixODBC компиляция невозможна с ошибкой:

Код: Выделить всё

error: cannot convert 'const wchar_t [24]' to 'SQLWCHAR*' {aka 'short
unsigned int*'} in assignment
qry = L"SELECT * FROM my_table;";
const wchar_t[24]
Я мог бы переписать код так:

Код: Выделить всё

std::wstring query = L"SELECT * FROM my_table;";
SQLWCHAR *qry = new SQLWCHAR[query.length() + 2];
memset( qry, '\0', query.length() + 2 );
const wchar_t *temp = src.c_str();
while( *qry )
{
qry++;
}
while( *temp )
{
*qry = *temp;
qry++;
temp++;
}
*qry++ = '\0';
*qry = '\0';
но использовать новый дорого и медленно.
Есть ли лучший способ?

Подробнее здесь: https://stackoverflow.com/questions/793 ... o-compille
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»