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

Очередное WTF ))) - C++

Восстановить пароль Регистрация
 
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 20:40     Очередное WTF ))) #1
Вот до чего меня жизнь довела:
имеем файл file.txt который содержит просто строку "Hello,World!" (с ковычками). Далее пишем такой код:
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
 
char hello[100] = {
#include "file.txt"
};
 
int main(){
      std::cout<<hello<<std::endl;
      return 0;
}
И оно работает!!! Очевидно, что выводится строка, которую содержит файл.
Я очень удивился, когда это все скомпилировалось, но когда удачно отработало, то вообще. Потом посидел - покурил и понял, что удивляться тут не чему, все вполне логично.

Думаю многим интересно будет на это посмотреть, тем более лето - на форуме глухо ))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.07.2011, 20:52     Очередное WTF ))) #2
Kastaneda, какой компилятор? У меня на OpenWatcom такое не прокатывает...
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 20:55  [ТС]     Очередное WTF ))) #3
MSVS 2010

Добавлено через 1 минуту
В MinGW тоже работает, только что проверил.
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
21.07.2011, 20:58     Очередное WTF ))) #4
Инициализация массива файлом. Во как !
NIch
 Аватар для NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
21.07.2011, 21:00     Очередное WTF ))) #5
Dev-C++ - работает!!!
"Hello,World!" (с ковычками)
Без кавычек, тож)
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 21:04  [ТС]     Очередное WTF ))) #6
Цитата Сообщение от NIch Посмотреть сообщение
Dev-C++ - работает!!!
Я ж написал:
В MinGW тоже работает, только что проверил.



Цитата Сообщение от An1ka
Инициализация массива файлом. Во как !
Ага, вот теперь думаю, как бы сделать так, чтобы наличие кавычек в файле было необязательным, тогда вообще круто будет)

Добавлено через 43 секунды
Цитата Сообщение от NIch Посмотреть сообщение
Без кавычек, тож)
В студии без кавычек не хочет, а вобще странно, ща проверю.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.07.2011, 21:05     Очередное WTF ))) #7
Опп.. Соврал. С кавычками OpenWatcom понимает.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 21:07  [ТС]     Очередное WTF ))) #8
Не может он без кавычек работать:
Код
//MinGW
file.txt|1|error: 'Hello' was not declared in this scope|
file.txt|1|error: 'World' was not declared in this scope|
file.txt|1|error: expected '}' before '!' token|
file.txt|1|error: expected ',' or ';' before '!' token|
error: expected declaration before '}' token|
||=== Build finished: 5 errors, 0 warnings ===|
В DEV_C++ используется компилятор MinGW, только возможно более старый.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
21.07.2011, 21:20     Очередное WTF ))) #9
забавно)
NIch
 Аватар для NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
21.07.2011, 21:22     Очередное WTF ))) #10
Да, все верно.
Пробовал изменять запись в файле все равно выводит Hello world!.
Можно удалять файл, программа не меняет свою работу. Она включает его в процессе компиляции.
И без кавычек компилироваться не хочет!
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.07.2011, 21:24  [ТС]     Очередное WTF ))) #11
Цитата Сообщение от NIch Посмотреть сообщение
Она включает его в процессе компиляции.
Ну так в этом и есть суть препроцессорных директив
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.07.2011, 23:30     Очередное WTF ))) #12
Она включает его еще ДО компеляции.
Да, неплохо так )
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
22.07.2011, 00:01     Очередное WTF ))) #13
жаль перевод строки и прочее не воспринимает без управляющих символов
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.07.2011, 01:30     Очередное WTF ))) #14
как вам такая штука?
включаем загаловочник, открывая все закрытые поля
C++
1
2
3
4
5
6
7
8
#define private public
 
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
 
#undef private
prZzZ
Программист
 Аватар для prZzZ
108 / 88 / 5
Регистрация: 22.03.2011
Сообщений: 232
22.07.2011, 02:08     Очередное WTF ))) #15
Чему удивляться то? - ПРЕПРОЦЕССОР - извращениям нет конца...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2011, 08:15     Очередное WTF )))
Еще ссылки по теме:

C++ map assigment of read only data member или WTF?
Очередное, из теста C++
C++ Очередное деструктивное: при вызове деструктора все падает

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

Или воспользуйтесь поиском по форуму:
voral
346 / 326 / 46
Регистрация: 16.03.2008
Сообщений: 1,698
22.07.2011, 08:15     Очередное WTF ))) #16
Вдарим нашим отечественным кодом по понятию "индусский код"!!!

Yandex
Объявления
22.07.2011, 08:15     Очередное WTF )))
Ответ Создать тему
Опции темы

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