Ошибка C2664
консольная) оно выдает ошибку:
error C2664: 'irc_privmsg' : cannot convert parameter 2 from 'const char [1]' to 'char *'
Вот в этой строке кода:
irc_privmsg(sock, channel, sendbuf, FALSE); выдается та ошибка
А вот как у меня объявлена irc_privmsg:
void irc_privmsg(SOCKET sock, char *dest, char *msg, BOOL notice);
Да, и *dest объявлена внутри структуры, как вы уже навероное поняли,вот так: char dest[128];
Собственно и второй параметр т.е channel: const char channel[] = "";
Как я понял при компиляции оно не может конвертировать второй параметр irc_privmsg т.е channel. Они же у меня
все одинаковы т.е объявлены как char. В чем я ошибаюсь, подскажите а то я не понял.
Я начал изучать Визуал Си недавно, так что не судите строго. Так вот, когда я компилирую программу (она у меня
консольная) оно выдает ошибку:
error C2664: 'irc_privmsg' : cannot convert parameter 2 from 'const char [1]' to 'char *'
Вот в этой строке кода:
irc_privmsg(sock, channel, sendbuf, FALSE); выдается та ошибка
А вот как у меня объявлена irc_privmsg:
void irc_privmsg(SOCKET sock, char *dest, char *msg, BOOL notice);
Да, и *dest объявлена внутри структуры, как вы уже навероное поняли,вот так: char dest[128];
Собственно и второй параметр т.е channel: const char channel[] = "";
Как я понял при компиляции оно не может конвертировать второй параметр irc_privmsg т.е channel. Они же у меня
все одинаковы т.е объявлены как char. В чем я ошибаюсь, подскажите а то я не понял.
Попробуй
irc_privmsg(sock, &channel, sendbuf, FALSE);
либо объяви chanel как char *chanel;
Попробуй
irc_privmsg(sock, &channel, sendbuf, FALSE);
либо объяви chanel как char *chanel;
Да не в этом все дело...
На самом деле, у тебя в объявлении функции объявлен неконстантный параметр, а передаешь константу... понятное дело компилятор будет ругаться...
Да не в этом все дело...
На самом деле, у тебя в объявлении функции объявлен неконстантный параметр, а передаешь константу... понятное дело компилятор будет ругаться...
Присвоить константе не константу можно, а вот наоборот нет
Присвоить константе не константу можно, а вот наоборот нет
Присвоить нельзя! Можно только проинициализировать один раз константу неконстантой и все!
Присвоить нельзя! Можно только проинициализировать один раз константу неконстантой и все!
А что делать с этим?
char *ch2 = "11111";
char *ch3 = "22222";
ch1 = ch2;
ch1 = ch3;
а вот так уже нельзя:
char ch2 = '2';
char ch3 = '3';
ch1 = ch2; // тут уже ругается
ch1 = ch3;
А что делать с этим?
char *ch2 = "11111";
char *ch3 = "22222";
ch1 = ch2;
ch1 = ch3;
а вот так уже нельзя:
char ch2 = '2';
char ch3 = '3';
ch1 = ch2; // тут уже ругается
ch1 = ch3;
Опять же, все очень просто :)
С указателями const работает иначе, нежели с обычными переменными...
Когда мы объявлем
const char *ch1;
то имеем ввиду, что нам запрещается менять данные, на которые указывает указатель ch1. Т.е. компилятор будет ругаться если мы попробуем сделать следующее:
*ch1 = 'a'
Если же мы хотим объявить именно константный указатель (т.е. тот который все время указывает на одни и теже данные, то следует делать так)
char *const ch1 = "aaaa";
char *ch2 = "11111";
char *ch3 = "22222";
ch1 = ch2; // ошибка
ch1 = ch3; // ошибка
Следующий код
#include <iostream>
#include "windows.h"
using namespace std;
int main()
{
int fOut;
int fSize;
char fPath[32];
char* buf;
cout << "Vvedite Imja Faila: \n";
cin >> fPath;
fOut = OpenFile (fPath, NULL, OF_READ);
fSize = GetFileSize(fOut, NULL);
_lclose (fOut);
return 0;
}
вылетает с ошибкой C2664: 'GetFileSize' : cannot convert parameter 1 from 'int' to 'void *'!
Почему первый параметр API-функции GetFileSize должен быть void * никак понять не могу... Спасибо за помощь! :)
файла.Сделай так.
#include <iostream>
#include <string>
#include "windows.h"
#include <io.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
wcout.imbue(std::locale("Russian_russia.OCP"));
string name;
wcout<<L"Введите имя файла"<<endl;
cin>>name;
if(_access(name.c_str(),00)==-1){
wcout<<L"Указан неверный путь или название файла"<<endl;
}
FILE *file = fopen(name.c_str(), "rb");
// получаем дескриптор
int hFile = _fileno(file);
int size = _filelength(hFile);
wcout<<L"Размер указанного файла : "<<size<<L" байт"<<endl;
fclose(file);
return 0;
}