M@gelearn Ответов: 2

Проблема с функцией wcscpy_s..


Я использую пример MSDN с create ComboBox, но у меня есть проблема с этим

wcscpy_s(A, sizeof(A)/sizeof(TCHAR), (TCHAR*)Planets[k]);


- говорит компилятор ..
||=== Build: Debug in ComboBox (компилятор: GNU GCC Compiler) ===|
|В функции 'void ComboBox(HWND)':|
|39|ошибка: 'wcscpy_s' не был объявлен в этой области|
||=== Ошибка сборки: 1 ошибка(ы), 0 предупреждение(ы) (0 минут(ов), 0 секунд(ов)) ===|

Я добавляю <cstring> и даже <wchar> Для загрузки функций, но не работает ни с этими 2 заголовками

Что я уже пробовал:

Кто-нибудь знает, как вывести это на свет :| ?

2 Ответов

Рейтинг:
17

Richard MacCutchan

wcscpy_s объявляется в строке.h в Windows, но может и не быть в gcc; попробуйте wcscpy. Кроме того, вы не должны использовать TCHAR для wcscpy_s, так как это только Unicode. Если вы хотите, чтобы ваш код был настроен на ASCII/Unicode, используйте tcscpy_s.


M@gelearn

Я перешел на wcscpy, но это займет всего 2 аргумента.. и да я попробовал даже струну.h но не объявлен на gcc. Я использовал TCHAR, потому что я просто копирую пример из MSDN, но они не указывают заголовки и на каком компиляторе работает. Другими словами, Я должен использовать wcscpy и забыть о TCHAR, поскольку он работает только для Unicode..
Еще раз спасибо, Ричард..

Richard MacCutchan

Документация MSDN предназначена для программистов Windows, использующих компиляторы Microsoft. Если вы используете gcc, то вам следует ознакомиться с документацией GNU. Если вы работаете в Linux, то используйте команду "man".

Рейтинг:
0

Rick York

На мой взгляд, все семейство API strcpy_s было просто глупым и избыточным. Вы можете использовать strncpy или wcsncpy и выполнить то же самое.

wcsncpy( A, (TCHAR*)Planets[k], sizeof(A) - 1 );
Значение -1 оставит место для нулевого завершения.