#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.