Reputation: 9767
I ran brew install allegro on OSX
following this tutorial: https://wiki.allegro.cc/index.php?title=Example_ExHello
my code
include <allegro.h>
int main(void) {
if (allegro_init() != 0)
return 1;
/* set up the keyboard handler */
install_keyboard();
/* set a graphics mode sized 320x200 */
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) != 0) {
if (set_gfx_mode(GFX_SAFE, 320, 200, 0, 0) != 0) {
set_gfx_mode(GFX_TEXT, 0, 0, 0, 0);
allegro_message("Unable to set any graphic mode\n%s\n", allegro_error);
return 1;
}
}
/* set the color palette */
set_palette(desktop_palette);
/* clear the screen to white */
clear_to_color(screen, makecol(255, 255, 255));
/* you don't need to do this, but on some platforms (eg. Windows) things
* will be drawn more quickly if you always acquire the screen before
* trying to draw onto it.
*/
acquire_screen();
/* write some text to the screen with black letters and transparent background */
textout_centre_ex(screen, font, "Hello, world!", SCREEN_W/2, SCREEN_H/2, makecol(0,0,0), -1);
/* you must always release bitmaps before calling any input functions */
release_screen();
/* wait for a keypress */
readkey();
return 0;
}
1.c:1:1: error: unknown type name 'include'
include <allegro.h>
^
1.c:1:9: error: expected identifier or '('
include <allegro.h>
^
2 errors generated.
make: *** [1] Error 1
Upvotes: 0
Views: 286
Reputation: 94654
Presuming that the typo of doing include <allegro.h>
was supposed to be #include <allegro.h>
, You've installed allegro5 - the API is very different between allegro4 (which this example is from) and allegro5. The display initialization sample program for allegro5 shows some of the differences:
#include <stdio.h>
#include <allegro5/allegro.h>
int main(int argc, char **argv){
ALLEGRO_DISPLAY *display = NULL;
if(!al_init()) { // allegro_init in allegro4
fprintf(stderr, "failed to initialize allegro!\n");
return -1;
}
display = al_create_display(640, 480); // very different to allegro4
if(!display) {
fprintf(stderr, "failed to create display!\n");
return -1;
}
al_clear_to_color(al_map_rgb(0,0,0)); // makecol -> al_map_rgb, clear_to_color -> al_clear_to_color
al_flip_display();
al_rest(10.0);
al_destroy_display(display);
return 0;
}
I built it using:
c++ -I/usr/local/include allegro_display.cc -o allegro_display -L/usr/local/lib -lallegro -lallegro_main
where the code was in the file allegro_display.cc
. Note that I compile using the C++ compiler, because allegro is really a C++ api (and the sample does not work when compiled as C code because there is no proper calling convention for structs in C, whereas there is for C++)
Upvotes: 0