在c ++的SDL编程中(我在Ubuntu Linux中编写代码),为了在屏幕上绘制文本,我创建了一个函数,它的第二个参数得到了文本。它的类型是char *。 在main函数中,我应该为第二个参数发送到上面的函数。例如,在此代码中,我在编译时遇到错误: (我想在屏幕上使用函数绘制文本(Player1必须播放...)
#include<iostream>
#include"SDL/SDL.h"
#include<SDL/SDL_gfxPrimitives.h>
#include "SDL/SDL_ttf.h"
using namespace std;
void drawText(SDL_Surface* screen,char* strin1 ,int size,int x, int y,int fR, int fG, int fB,int bR, int bG, int bB)
{
TTF_Font*font = TTF_OpenFont("ARIAL.TTF", size);
SDL_Color foregroundColor = { fR, fG, fB };
SDL_Color backgroundColor = { bR, bG, bB };
SDL_Surface* textSurface = TTF_RenderText_Shaded(font, strin1,foregroundColor, backgroundColor);
SDL_Rect textLocation = { x, y, 0, 0 };
SDL_BlitSurface(textSurface, NULL, screen, &textLocation);
SDL_FreeSurface(textSurface);
TTF_CloseFont(font);
}
int main(){
SDL_Init( SDL_INIT_VIDEO);
TTF_Init();
SDL_Surface* screen = SDL_SetVideoMode(1200,800,32,0);
SDL_WM_SetCaption("Ping Pong", 0 );
SDL_Delay(500);
drawText(screen,"Player1 must play with ESCAPE & SPACE Keys and player2 must play with UP & DOWN Keys. . . Have Fun!!!",20,15,550,50,50,100,180,180,180);
return 0;
}
答案 0 :(得分:0)
您所获得的不是错误,而是一个警告。编译器并没有强迫你修改它不喜欢的代码,只是暗示它可能有问题。
在C中,将字符串常量处理为char*
是有效的,但由于您仍然不允许修改此常量,因此这种方法被认为是危险的,因此被弃用。据我所知,较新的C ++标准禁止使用字符串文字作为常量。
因此,虽然相关代码可能正式正确(取决于语言标准版本),但建议您将函数中的参数类型更改为const char*
。