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

Hello world C: - C++

Восстановить пароль Регистрация
 
metopa
10 / 10 / 3
Регистрация: 04.01.2013
Сообщений: 67
19.09.2013, 00:20     Hello world C: #1
Доброго времени суток!

Собственно, начал изучать С++, пользуюсь VS2012

Почему этот код работает
C++
1
2
3
4
5
6
7
8
9
#include "stdafx.h"
 
using namespace System;
 
int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hello World!");
    return 0;
}
а этот нет?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
 
using namespace System;
 
int Hello()
{
    Console::WriteLine(L"Hello World!");
    return 0;
}
 
int main(array<System::String ^> ^args)
{
        Hello;
    //Console::WriteLine(L"Hello World!");
    return 0;
}
Добавлено через 3 минуты
И зачем эта L в WriteLine(L"Hello World!")?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 00:20     Hello world C:
Посмотрите здесь:

C++ HELLO WORLD
C++ Тестирование Hello World
Hello, World! C++
C++ Hello, World!
C++ Hello World!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
19.09.2013, 00:20     Hello world C: #2
int main(array<System::String ^> ^args)
{
Hello(); -< Забыл указать это функция
//Console::WriteLine(L"Hello World!");
return 0;
}
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.09.2013, 00:29     Hello world C: #3
Цитата Сообщение от metopa Посмотреть сообщение
[CPP]И зачем эта L в WriteLine(L"Hello World!")?
"Hello World!" — строка в стандартной (для системы) однобайтовой кодировке. L"Hello World" — строка в стандартной многобайтовой кодировке (для Винды это UTF-16). Console::WriteLine — это метод .Net, поэтому и строки ему нужны в стандартном для .Net виде (в UTF-16).
metopa
10 / 10 / 3
Регистрация: 04.01.2013
Сообщений: 67
19.09.2013, 00:31  [ТС]     Hello world C: #4
Спасибо
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
19.09.2013, 13:37     Hello world C: #5
Замечу, что L"some text" - это по-прежнему __wchar_t *, а не System::String ^. Так что там неявно вызывается создание строки через соответствующий конструктор.

Кстати, есть такое подозрение что без юникода (char *) оно бы всё равно скомпилировалось и даже работало... но нормально - только на тех компьютерах, на которых установлена дефаултаная кодировка Win1251 /* не проверял */
Yandex
Объявления
19.09.2013, 13:37     Hello world C:
Ответ Создать тему
Опции темы

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