Форум программистов, компьютерный форум CyberForum.ru

Помощь с фиксом ошибок - C++

Восстановить пароль Регистрация
 
Strick
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
15.05.2013, 19:38     Помощь с фиксом ошибок #1
Код:
C++
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
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#define  OS_TYPE  0xF0    //0xF0 - Windows, 0x0F - Linux
 
 
#if   OS_TYPE & 0xF0   // Windows
#include <Windows.h>
 
// MAX_COMPUTERNAME_LENGTH
int  get_computer_name(char*  name, unsigned long size) {
     return GetComputerName(name, &size);
}
 
#else if OS_TYPE & 0x0F   // Linux
#include <unistd.h>
#include <sys/param.h>
 
// MAXHOSTNAMELEN
int  get_computer_name(char*  name, unsigned long size) {
     return gethostname(name, size);
}
 
#endif
 
 
 
 
int main(int argc, char* argv[])
{
   char name[255] = { '\0' };
   get_computer_name(name, 255);
   printf("computer name: %s\n", name);
 
   getchar();
   return 0;
}
Ошибка

Кликните здесь для просмотра всего текста
1>------ Построение начато: проект: ConsoleApplication2, Конфигурация: Debug Win32 ------
1> stdafx.cpp
1> ConsoleApplication2.cpp
1>c:\users\admin\desktop\consoleapplication2\consoleapplication2\consoleapplication2.cpp(14): error C2664: GetComputerNameW: невозможно преобразовать параметр 1 из "char *" в "LPWSTR"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Как исправить? Пользуюсь Visual Studio

Добавлено через 49 минут
ап.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 19:38     Помощь с фиксом ошибок
Посмотрите здесь:

C++ Предотвращение ошибок
Описание ошибок. C++
Обработка ошибок C++
разбор ошибок C++
C++ Исправление ошибок в C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 19:43     Помощь с фиксом ошибок #2
C++
1
int  get_computer_name(char  &name, unsigned long size)
Добавлено через 1 минуту
или уж если хотите через указатель, то соответственно name надо объявить как указатель!
Strick
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
15.05.2013, 19:44  [ТС]     Помощь с фиксом ошибок #3
C++
1
2
3
4
5
int  get_computer_name(char*  name, unsigned long size) 
{
     int  get_computer_name(char  &name, unsigned long size);
     return
}
Код
error C2059: синтаксическая ошибка: }
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 19:47     Помощь с фиксом ошибок #4
а что в return?
Strick
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
15.05.2013, 19:52  [ТС]     Помощь с фиксом ошибок #5
Изначально было так:
C++
1
2
3
4
5
int  get_computer_name(char*  name, unsigned long size) 
{
     int  get_computer_name(char  &name, unsigned long size)
 
}
Код
error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
исправил на
>>
C++
1
2
3
4
5
int  get_computer_name(char*  name, unsigned long size) 
{
     int  get_computer_name(char  &name, unsigned long size);
 
}
Код
error C4716: get_computer_name: должна возвращать значение
Ну а потом добавил return
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
15.05.2013, 19:58     Помощь с фиксом ошибок #6
Strick, так после return должно быть то,что будет возвращено.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 22:07     Помощь с фиксом ошибок
Еще ссылки по теме:

C++ Обработка ошибок
C++ исправление ошибок
Помощь с фиксом ошибок C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Strick
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 12
15.05.2013, 22:07  [ТС]     Помощь с фиксом ошибок #7
Извиняюсь за нубство, но разобраться не могу.
Сейчас перечитал еще раз и понял что неправильно заменил функцию.
Исправил, ошибки:
C++
1
2
3
consoleapplication2.cpp(16): error C2664: GetComputerNameW: невозможно преобразовать параметр 1 из "char" в "LPWSTR"
1>          Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
consoleapplication2.cpp(36): error C2664: get_computer_name: невозможно преобразовать параметр 1 из "char [255]" в "char &"
Код строчек:
C++
1
2
16: return GetComputerName(name, &size);
36: get_computer_name(name, 255);
Добавлено через 2 минуты
C++
1
2
3
4
int  get_computer_name(char  &name, unsigned long size)
{
     return GetComputerName(name, &size);
}
C++
1
2
3
4
5
6
7
8
9
int main(int argc, char* argv[])
{
   char name[255] = { '\0' };
   get_computer_name(name, 255);
   printf("computer name: %s\n", name);
 
   getchar();
   return 0;
}
Добавлено через 1 час 5 минут
ап.

Добавлено через 44 минуты
ап.
Yandex
Объявления
15.05.2013, 22:07     Помощь с фиксом ошибок
Ответ Создать тему
Опции темы

Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru