Ошибка C : ожидаемая ‘)’ в середине изучения SDL

#c #string #sdl

#c #строка #sdl

Вопрос:

Учитывая результаты поиска, я чувствую, что подобные вещи задавались много раз. Тем не менее, я не смог найти ответ, поэтому здесь:

Моя настройка: CodeBlocks, GCC C и SDL
В настоящее время я просматриваю руководства LazyFoo по SDL и получаю эту ошибку:

ошибка: ожидаемая ‘)’ перед ‘:’ токеном

из этого кода:

SDL_Surface* load_image(std::string myfile)

в этом контексте

#включить «SDL/SDL.h»

#включить < string.h>

const int SCREEN_WIDTH = 425;
const int SCREEN_HEIGHT = 550;
const int SCREEN_BPP = 32;

SDL_Surface * сообщение = NULL;
SDL_Surface* фон = NULL;
SDL_Surface * экран = NULL;

SDL_Surface* load_image(std::string myfile)
{
больше материала и остальной части программы и т.д.
}

Я чувствую, что это может быть как-то связано с тем, как мои библиотеки string или SDL настроены в CodeBlocks. Какие-либо предложения или очевидные ссылки на решения, которые я пропустил?

Комментарии:

1. измените «#включить < string.h >» на «#включить <string>».

Ответ №1:

Включите <string> вместо < string.h > , если вы хотите использовать библиотеку строк C STL.

Ответ №2:

Вы должны использовать string вместо string.h при включении из заголовка.

Комментарии:

1. Ах, вот как в руководстве предлагалось мне действовать. Однако, когда я сделал это изначально, он выдал мне «string: нет такого файла или каталога», что только подтверждает мою уверенность в том, что это какая-то сумасшедшая путаница с моей настройкой CodeBlocks.

2. Скорее всего. Попробуйте использовать Visual C Express от Microsoft (если в Windows) или NetBeans с подключаемым модулем C (в Linux). Это то, что я сейчас использую.

3. Я немедленно сообщу о своих выводах.

Ответ №3:

Я также следил за руководством по адресу: http://lazyfoo.net/SDL_tutorials/lesson02/index.php и получил сообщение: строка 3, ошибка: строка: нет такого файла или каталога строка 15, ошибка: ожидаемая ‘)’ перед ‘:’ токеном

я думаю, что нашел причину проблемы.

При выборе «Файл / Новый / Пустой файл» по умолчанию используется расширение файла без названия 1.c , я изменил расширение файла на .cpp, и это заставило блоки кода распознавать #include, и теперь приложение работает.

Ответ №4:

Это звучит как ошибка C; вы должны компилироваться с g , а не gcc .

Ответ №5:

Я понял это. У меня была та же проблема, но я заставил ее работать. Вот именно то, что я сделал. Сначала загрузил исходные файлы, которые lazy foo предоставил в конце руководства. Я попробовал их, и я получил ошибку, которая SDL.dll не найден на компьютере. Я переместил SDL.dll файл из папки, в которой находился проект, который должен был нормально работать, в C:/windows/system32.

Затем я снова попробовал программу, ту, которая поставляется с руководством, окно вспыхнуло, но ничего не показало, я скопировал два файла bpm в проект, и это сработало.

Определенно файл должен быть .cpp, поэтому я скажу это.

Подождите, это еще не все. Теперь я был уверен, что в моей попытке на уроке 2 не было ошибок, я напечатал все точно так, как я это видел. Однако в этом и заключалась проблема.

Загруженное изображение = SDL_LoadBMP(filename.c_str()); <__ где он показывает это, с используемым им шрифтом это больше похоже на загруженное изображение = SDL_LoadBMP(filename.c_str0);

Просто посмотрите на it…it делает, anwhere он вводит () будет выглядеть как 0, и вы действительно должны знать.

Поэтому всем, у кого возникла эта проблема, а также любым другим полученным вами советам, я предлагаю проверить ваш код на наличие tricky (), который вы, возможно, прочитали и ввели как 0.