Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / cannot convert argument 1 from '_TCHAR *' to 'const char *' / 9 сообщений из 9, страница 1 из 1
29.06.2014, 15:57
    #38683055
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cannot convert argument 1 from '_TCHAR *' to 'const char *'
Есть такой кусок кода, пытаюсь собрать в 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
29.06.2014, 16:09
    #38683064
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cannot convert argument 1 from '_TCHAR *' to 'const char *'
ALex_hha,

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

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

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

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

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

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

strcmp

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

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

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


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