|
shows error when creating class DATA in Xcode for c project |
xtech45
Member #15,430
December 2013
|
#include <stdio.h> class DATA { const float FPS =30; int main() return 0; the following error appears when i type this in Xcode and the language is c 1) Excepted ';' after top level deflator why is this happening and should i need to include any header or is there any work around for this |
Edgar Reynaldo
Major Reynaldo
May 2007
|
xtech45 said:
DATA() : mutex(al_create_mutes()), cond(al_create_cond()), posiX(0); posiY(0); modi_X(false), ready(false){}
Look right after posiX(0) and posiY(0) - you used two semicolons instead of commas. My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
xtech45
Member #15,430
December 2013
|
I have changed that and i still get the same error and it shows an error at the starting itself stating UNKNOWN TYPE NAME and EXPECTED SEMICOLON under which header does the class comes |
Edgar Reynaldo
Major Reynaldo
May 2007
|
You also mis-spelled al_create_mutex as mutes. There are probably other things too. Post the whole code, use code tags. <code>code goes here</code> My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
xtech45
Member #15,430
December 2013
|
1
2#include <stdio.h>
3#include <allegro5/allegro.h>
4
5class DATA {
6
7 public :
8
9 ALLEGRO_MUTEX *mutex;
10 ALLEGRO_COND *cond;
11 float posiX;
12 float posiY;
13 bool modi_x;
14 bool ready;
15 DATA() :
16 mutex(al_create_mutes()),
17 cond(al_create_cond()),
18 posiX(0),
19 posiY(0),
20 modi_X(false),
21 ready(false){}
22 -DATA()
23 {
24 al_destroy_mutex(mutex);
25 al_destroy_cond(cond);
26 }
27};
28
29const float FPS =30;
30const int SCREEN_H =640;
31
32int main()
33{
34
35 return 0;
36}
this is actually a tutorial from the allegro site itself and |
Elias
Member #358
May 2000
|
It's "~DATA" not "-DATA". What if you just copy and paste the complete tutorial? -- |
Thomas Fjellstrom
Member #476
June 2000
|
Also make sure you created the file as a c++ file, rather than c. -- |
Edgar Reynaldo
Major Reynaldo
May 2007
|
xtech45 said:
this is actually a tutorial from the allegro site itself and yes, but the tutorial doesn't have those errors... My Website! | EAGLE GUI Library Demos | My Deviant Art Gallery | Spiraloid Preview | A4 FontMaker | Skyline! (Missile Defense) Eagle and Allegro 5 binaries | Older Allegro 4 and 5 binaries | Allegro 5 compile guide |
xtech45
Member #15,430
December 2013
|
1#include <stdio.h>
2#include <allegro5/allegro.h>
3
4class DATA{
5
6 public:
7
8 ALLEGRO_MUTEX *mutex;
9 ALLEGRO_COND *cond;
10 float posiX;
11 float posiY;
12 bool modi_X;
13 bool ready;
14
15 DATA() : mutex(al_create_mutex()),
16 cond(al_create_cond()),
17 posiX (0),
18 posiY (0),
19 modi_X(false),
20 ready (false) {}
21
22 ~DATA(){
23
24 al_destroy_mutex(mutex);
25 al_destroy_cond(cond);
26
27 }
28
29};
30
31const float FPS = 30;
32const int SCREEN_W = 640;
33const int SCREEN_H = 480;
34const int BOUNCER_SIZE = 32;
35
36static void *Func_Thread(ALLEGRO_THREAD *thr, void *arg);
37
38int main(int argc, char **argv){
39
40 ALLEGRO_DISPLAY *display = NULL;
41 ALLEGRO_EVENT_QUEUE *event_queue = NULL;
42 ALLEGRO_TIMER *timer = NULL;
43 ALLEGRO_BITMAP *bouncer = NULL;
44 ALLEGRO_THREAD *thread_1 = NULL;
45 ALLEGRO_THREAD *thread_2 = NULL;
46
47 bool redraw = true;
48
49 if(!al_init()) {
50 fprintf(stderr, "failed to initialize allegro!\n");
51 return -1;
52 }
53
54 if(!al_install_mouse()) {
55 fprintf(stderr, "failed to initialize the mouse!\n");
56 return -1;
57 }
58
59 timer = al_create_timer(1.0 / FPS);
60 if(!timer) {
61 fprintf(stderr, "failed to create timer!\n");
62 return -1;
63 }
64
65 display = al_create_display(SCREEN_W, SCREEN_H);
66 if(!display) {
67 fprintf(stderr, "failed to create display!\n");
68 al_destroy_timer(timer);
69 return -1;
70 }
71
72 bouncer = al_create_bitmap(BOUNCER_SIZE, BOUNCER_SIZE);
73 if(!bouncer) {
74 fprintf(stderr, "failed to create bouncer bitmap!\n");
75 al_destroy_display(display);
76 al_destroy_timer(timer);
77 return -1;
78 }
79
80 al_set_target_bitmap(bouncer);
81 al_clear_to_color(al_map_rgb(255, 0, 255));
82 al_set_target_bitmap(al_get_backbuffer(display));
83 event_queue = al_create_event_queue();
84
85 if(!event_queue) {
86 fprintf(stderr, "failed to create event_queue!\n");
87 al_destroy_bitmap(bouncer);
88 al_destroy_display(display);
89 al_destroy_timer(timer);
90 return -1;
91 }
92
93 al_register_event_source(event_queue, al_get_display_event_source(display));
94 al_register_event_source(event_queue, al_get_timer_event_source(timer));
95 al_register_event_source(event_queue, al_get_mouse_event_source());
96 al_clear_to_color(al_map_rgb(0,0,0));
97 al_flip_display();
98 al_start_timer(timer);
99
100 DATA data;
101
102 thread_1 = al_create_thread(Func_Thread, &data);
103 al_start_thread(thread_1);
104
105 al_lock_mutex(data.mutex);
106 while (!data.ready){
107
108 al_wait_cond(data.cond, data.mutex);
109
110 }
111 al_unlock_mutex(data.mutex);
112
113 al_lock_mutex(data.mutex);
114 data.modi_X = true;
115 data.ready = false;
116 al_unlock_mutex(data.mutex);
117
118 thread_2 = al_create_thread(Func_Thread, &data);
119 al_start_thread(thread_2);
120
121 al_lock_mutex(data.mutex);
122 while (!data.ready){
123
124 al_wait_cond(data.cond, data.mutex);
125
126 }
127 al_unlock_mutex(data.mutex);
128
129
130 while(1)
131 {
132 ALLEGRO_EVENT ev;
133 al_wait_for_event(event_queue, &ev);
134
135 if(ev.type == ALLEGRO_EVENT_TIMER) {
136 redraw = true;
137 }
138 else if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
139 break;
140 }
141 else if(ev.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) {
142 break;
143 }
144 if(redraw && al_is_event_queue_empty(event_queue)) {
145 redraw = false;
146
147 al_lock_mutex(data.mutex);
148 float X = data.posiX;
149 float Y = data.posiY;
150 al_unlock_mutex(data.mutex);
151
152 al_draw_bitmap(bouncer, X, Y, 0);
153
154 al_flip_display();
155 }
156 }
157 al_destroy_thread(thread_1);
158 al_destroy_thread(thread_2);
159
160 al_destroy_bitmap(bouncer);
161 al_destroy_timer(timer);
162 al_destroy_display(display);
163 al_destroy_event_queue(event_queue);
164
165 return 0;
166}
167
168 static void *Func_Thread(ALLEGRO_THREAD *thr, void *arg){
169
170 DATA *data = (DATA*) arg;
171 float num = 0.1;
172
173 al_lock_mutex(data->mutex);
174
175 bool modi_X = data->modi_X;
176 data->ready = true;
177 al_broadcast_cond(data->cond);
178
179 al_unlock_mutex(data->mutex);
180
181 while(!al_get_thread_should_stop(thr)){
182
183 al_lock_mutex(data->mutex);
184 if(modi_X)
185 data->posiX += num;
186 else
187 data->posiY += num;
188 al_unlock_mutex(data->mutex);
189
190 al_rest(0.01);
191
192 }
193
194
195 return NULL;
196 }
this is entire code and even after saving it as c++ file i get the same error |
Arthur Kalliokoski
Second in Command
February 2005
|
I don't get any errors compiling that. Which compiler are you using, what options or command line etc.? [EDIT] nevermind xtech45 said: when i type this in Xcode and the language is c It has to be compiled as C++. I don't know what Xcode is, try g++. They all watch too much MSNBC... they get ideas. |
xtech45
Member #15,430
December 2013
|
hmm okay will try it from that , but you need to include all the library into the g++ compiler before compiling it right |
Arthur Kalliokoski
Second in Command
February 2005
|
xtech45 said: you need to include all the library into the g++ compiler before compiling it right Which library? Allegro? You have to link it in somewhere to get an executable, even with C. They all watch too much MSNBC... they get ideas. |
xtech45
Member #15,430
December 2013
|
ya allegro only and how do i link it and is there any links or guidance for how to link it to get an executable |
gezegond
Member #14,762
December 2012
|
xcode is for iOS development afaik.
|
|