Вот мы и дошли до второй части второго урока. Если вы, не ознакомившись с предыдущими частями учебных материалов и перешли сразу к этому уроку, то вам необходимо возвратиться и прочитать предыдущие части. В противном случае многое, написанное ниже, может оказаться непонятным для вас.
Итак, у меня есть для вас две новости: хорошая и плохая. Начнем с плохой: следующая часть программы будет довольно сложной. А теперь хорошая новость: вам не придется понимать ее. И вот почему (мы оставим объяснение данной синтаксической структуры на потом): В основном этот кусок кода содержит функции, вызываемые в нашей программе. Функции позволяют вашей PSP не зависать, а также не выходить из программы, когда это не требуется. Вставьте это в свою программу (файл main.c):
/* Функция выхода */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;}
/* Подпроцесс обратного выхода */
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;}
/* Настраивает подпроцесс и присваивает ему id */
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0×11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;}
Сейчас мы должны задать «основную» функцию. Каждой программе на C и C++ требуется основная функция. Поскольку именно оттуда запускается основной код. Функции С (и некоторые C++) — в парадигме «procedural». Это значит, что движение происходит по линейному пути. Например, если у вас есть такой код:
//Не используйте в своей программе.
//Это пример.
int myFunction() {
//Print Out 'A'
return 0;}
int main() {
//Print Out 'B'
myFunction();
//Print Out 'C'
return 0;}
Комментарии (если не помните, что представляют собой комментарии, смотрите выше) к данному отрезку программы расскажут обо всех нюансах. Если в коде программы напечатали бы «B», тогда ввели бы и «C», потому что компилятор запускается в основной функции. Нужно напечатать «B» в том случае, если это определяется «myFunction», которая задана выше. Она «понимает», что данный символ необходимо ввести и затем возвращается в то место, где заканчивался процесс, и печатает «C». Все ваши программы (пока Вы не достигнете совершенного C++) будут придерживаться этой линейной структуры. Поэтому «основная» функция очень важна для нашей программы. Чтобы определить функцию, вы используете следующую схему: «[return type] [function name]() {». «The return type» — это процесс отправления функции к концу программы. Для «main» необходим тип «int»(что обозначает целое число). Имя функции — ваше имя, «main» будет, очевидно, названо «основным». Теперь зададим свою функцию, поместив следующую строку в ваш код:
[i]int main() {[/i]
Итак, сделайте еще один глубокий вдох. Вы уже многому научились! И осталась последняя (третья) часть данного урока, в которой мы раскроем самую изюминку. Если вы готовы, то мы продолжим.