powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / cannot convert argument 1 from '_TCHAR *' to 'const char *'
9 сообщений из 9, страница 1 из 1
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683055
ALex_hha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой кусок кода, пытаюсь собрать в vs 2013.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
	
        printf("FT2232H-based NAND reader");
	//Parse command line options
	Action action=actionNone;
	NandChip::AccessType access=NandChip::accessBoth;
	for (x=1; x<argc; x++) {
		if (strcmp(argv[x],"-i")==0) {
			action=actionID;
		} else if (strcmp(argv[x],"-r")==0 && x<=(argc-2)) {
			action=actionRead;
			file=argv[++x];
		} else if (strcmp(argv[x],"-w")==0 && x<=(argc-2)) {
			action=actionWrite;
			file=argv[++x];
		} else if (strcmp(argv[x],"-v")==0 && x<=(argc-2)) {
			action=actionVerify;
			file=argv[++x];
		} else if (strcmp(argv[x],"-u")==0 && x<=(argc-2)) {
			action=actionVerify;
			char *endp;
			x++;
			vid=strtol(argv[x], &endp, 16);
			if (*endp!=':') {
				err=true;
			} else {
				endp++;
				pid=strtol(endp, NULL, 16);
			}
		} else if (strcmp(argv[x],"-t")==0 && x<=(argc-2)) {
			x++;
			if (strcmp(argv[x],"main")==0) {
				access=NandChip::accessMain;
			} else if (strcmp(argv[x], "oob")==0) {
				access=NandChip::accessOob;
			} else if (strcmp(argv[x], "both")==0) {
				access=NandChip::accessBoth;
			} else {
				printf("Must be 'main' 'oob' or 'both': %s\n", argv[x]);
				err=true;
			}
		} else if (strcmp(argv[x],"-s")==0) {
			doSlow=true;
		} else {
			printf("Unknown option or missing argument: %s\n", argv[x]);
			err=true;
		}
	}



Если выбираю debug профиль, то все отлично собирается, а если Release, то получаю кучу ошибок вида

авторError 1 error C2664: 'int strcmp(const char *,const char *)' : cannot convert argument 1 from '_TCHAR *' to 'const char *' D:\VS\NANDReader_FTDI\NandTool\NandTool.cpp 54 1 NandTool


В чем может быть отличие Debug от Release в данном контексте?
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683064
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALex_hha,

Может, лучше использовать класс std::string? Я не понимаю людей, которые пишут на С++, используя лишь сишные ф-ии.
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683087
ALex_hha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну проект писал не я, так что ...

А дело оказалось в настройках Character Set. В Debug - Multi-Byte, а в Release - Unicode. Поэтому и не собиралось.

Это мне попался такой кривой проект или по дефолту всегда в Release билдах используется Unicode?
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683092
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALex_hhaЭто мне попался такой кривой проект
да
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683097
smald
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ
Может, лучше использовать класс std::string? Я не понимаю людей, которые пишут на С++, используя лишь сишные ф-ии.

На string, и вообще на размашистом и неаккуратном использовании (а использование string вместо char* везде таковым и будет)
можно здорово потерять в производительности, когда простая С++ прога будет исполняться медленнее, чем на python.
Один C++ корифей (Александреску) недавно признался, что в проектах, в которых участвует, string-и не используются вообще.
И это в свете объявленной такими корифеями тенденции к замене char* на string,
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683106
ALex_hha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что если писать проект с нуля, то лучше сразу использовать Unicode или есть какие то нюансы?
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683153
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилALex_hhaЭто мне попался такой кривой проект
да

Кроме этого, попался и не очень прямой код.

Либо там НЕ должно быть упоминания TCHAR, либо все функции типа

strcmp

должны быть заменены на функции типа

_tcscmp
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683155
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALex_hhaЯ так понимаю, что если писать проект с нуля, то лучше сразу использовать Unicode или есть какие то нюансы?

Нет, если проект начинается с нуля, лучше сразу НЕ ИСПОЛЬЗОВАТЬ UNICODE.
UTF-16 - тупиковая ветвь развития IT. А UTF-32 VisualStudio не поддерживается, на сколько я знаю.
...
Рейтинг: 0 / 0
cannot convert argument 1 from '_TCHAR *' to 'const char *'
    #38683204
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smaldОдин C++ корифей (Александреску) недавно признался, что в проектах, в которых участвует, string-и не используются вообще.
Александреску это пример человека, который научит как можно делать программы на С++.
Для того чтобы научиться как нужно делать программы на С++ нужны другие авторитеты :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / cannot convert argument 1 from '_TCHAR *' to 'const char *'
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]