C / C++ 19.12.2015 / 08:34 | | mrEDitor Пользователь Сейчас: Offline
Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
| К тому, что происходило в Java-теме и о передаче массивов в С/С++: Передача массива по указателю – единственный способ передать массив в C/C++: void f(int arr[]) {
arr[2] = 9;
}
int main() {
int arr[] = { 5, 6, 7, 8 };
cout << arr[2] << ' ';
f(arr);
cout << arr[2];
return 0;
}
Вывод: 7 9 При этом объявление аргумента как const int выдаст ошибку компиляции как изменение константного объекта; чтение будет по-прежнему возможно. Ещё есть относительно замечательная функция memcpy, которой можно скопировать область памяти (а вдруг?). Очень интересно, что подразумевалось под передачей массива по указателю, неужели что-то такое: void f(int& a) {
int* arr = &a;
arr[2] = 9;
}
int main() {
int arr[] = { 5, 6, 7, 8 };
cout << arr[2] << ' ';
f(*arr);
cout << arr[2];
return 0;
}
А понятие "массив" существует в C/C++ где-то на уровне понятия "строка", он как бы есть, но он – не то, чем кажется. Изменено mrEDitor (19.12 / 08:35) (всего 2 раза) |
19.12.2015 / 09:19 | | Khorrth Пользователь Сейчас: Offline
Регистрация: 03.12.2015
| Я сейчас как раз читаю про массивы в С++... Сложная тема, однако... Кстати, а как можно собрать готовый пакет (включая графику и все остальное), чтобы при установке он требовал библиотеку SFML в качестве зависимости?
Изменено Khorrth (19.12 / 09:21) (всего 1 раз) |
19.12.2015 / 09:54 | | Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Цитата Khorrth: Ой, Java - это тоже отдельная история. Я в последнее время очень сильно ругаюсь на ее "кросс-платформенность". " Написано однажды - работает везде" в последнее время лживо. У языкаЭтот пост — помесь всевозможной лжи. Dalvik и ART не являются JVM, и именно поэтому оракл с Google судиться. J2ME — отдельная тема, уже давно забытая. Вторая часть твоего поста (про легкость кросскомпиляции нативного кода) еще более неверна. https://github.com/mattico/rustyjit/blob/master/src/main.rs — для unix систем и win используется различный код. __________________
Эль Презеденте Изменено Oak (19.12 / 09:57) (всего 1 раз) |
19.12.2015 / 11:47 | | Khorrth Пользователь Сейчас: Offline
Регистрация: 03.12.2015
| Да, но и для разных виртуальных машин - тоже разный код получается. Вот только Unix и Windows - две платформы, а этих ВМ - тысячи их. Да, Dalvik и ART - не JVM. Но для них пишут на Java. При чем, насколько я знаю, на Java 1.6. J2ME - Java 1.4. Java SE - Java 8. При чем back-end-совместимость есть, но на Java SE просто так код J2ME не запустишь. Dalvik - вообще имеет другой формат байт-кода и ни с чем не совместим... Кому оно нужно, если можно использовать нативные языки и не будет никаких проблем...
Изменено Khorrth (19.12 / 11:50) (всего 1 раз) |
19.12.2015 / 12:04 | | aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| Khorrth, подожди-подожди. Мир далеко не ограничивается Unix-based, Windows и Android. С «нативной компиляцией» всё не так гладко, как ты думаешь. Есть десятки языков ассемблера. Процессоры тоже бывают разными - про архитектуры же слышал? Разные разрядности, разные системы команд. Да даже популярные процессоры на x86 и x86-64 могут... Отличаться из-за всевозможных расширений (SSE, 3DNow, MMX, FPU, etc). Можешь у @NaruTrey спросить о том, как весело компилить под NES с её сотнями мапперов. __________________
don't tread on me |
19.12.2015 / 12:36 | | Khorrth Пользователь Сейчас: Offline
Регистрация: 03.12.2015
| Это я понимаю. Только виртуальных машин еще больше чем платформ при том, что они не на все портированы. ВМ буквально каждого телефона с J2ME отличается.
|
19.12.2015 / 12:37 | | Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Khorrth, Android — Java 7, Java 2 Me — Java 1.3. Совместимость не бекенд а обратная (backwards), на Java SE код J2ME не запустится потому что там была библиотека MIDP с языком это не связано.
Да, но и для разных виртуальных машин - тоже разный код получается. Это откровенная ложь и незнание Java окружения. Не зря существует JVM Specification от Oracle (Sun).
На Android пишут на языке Java, но Java и JVM — разные вещи.
В общем говоря, люди перешли на языки с ВМ вовсе не потому, что "можно использовать нативные языки и не будет никаких проблем..."
__________________
Эль Презеденте Изменено Oak (19.12 / 12:38) (всего 1 раз) |
19.12.2015 / 12:49 | | Khorrth Пользователь Сейчас: Offline
Регистрация: 03.12.2015
| J2ME - 1.4. Это на моем телефоне, проверено точно. Не только: на Java SE не запустится код потоиму, что он распространяется в виде MIDlet'ов и для их установки/запуска нужно AMS соответсвующее. Про отличия CVM и KVM не знаю, но, возможно, это тоже роль играет. Да, язык и ВМ - разные вещи. Я сам юзал Scala, Groovy, видел MIDletPascal, GPCP и так далее. Кросс-платформенность языков с ВМ сомнительна. Почему бы не юзать кросс-платформенные библиотеки? Про безопасность ничего не знаю. Я пока еще не успел напороться на какие-то грабли в С++.
|
19.12.2015 / 13:30 | | Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Khorrth, Не только: на Java SE не запустится код потоиму, что он распространяется в виде MIDlet'ов и для их установки/запуска нужно AMS соответсвующее. Это абсолютная глупость.
Почему бы не юзать кросс-платформенные библиотеки?Наверное, потому что их нет?
__________________
Эль Презеденте Изменено Oak (19.12 / 13:31) (всего 1 раз) |
19.12.2015 / 13:46 | | Khorrth Пользователь Сейчас: Offline
Регистрация: 03.12.2015
| 1. Не глупость. Там же нет обычного public static void main(...)... Там MIDlet.startApp(); Еще не понятна сиьуация с JNI. В J2ME его юзать нельзя, но там в API как раз оно и юзается %( А в Java SE - можно. 2. Серьезно? А те же самые Qt, GTK, SDL, SFML?
|
Всего сообщений: 2777 Фильтровать сообщения Поиск по теме Файлы топика (111)
|