Множественное объявление переменных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Поясните, пожалуйста, что я делаю не так. Я создал хэдер, где объявляю глобал-переменные.
Листинг программы
  1. #ifndef GLOBALVAR_H_INCLUDED
  2. #define GLOBALVAR_H_INCLUDED
  3. #define bul u8
  4.  
  5. //уровни
  6. #define lvl_first (1)
  7. #define lvl_jaws_boss (2)
  8. #define lvl_worm_boss (3)
  9. #define lvl_gorguli (4)
  10. #define lvl_rotor (5)
  11. #define lvl_levi_boss (6)
  12. #define lvl_psevdo3d (7)
  13. #define lvl_fire (8)
  14. #define lvl_baphomet_boss (9)
  15. #define lvl_lilith_boss (10)
  16. #define lvl_raiders (11)
  17. #define lvl_jesus (12)
  18. #define lvl_rebro (13)
  19. #define lvl_arcanoid (14)
  20. #define lvl_behemoth (15)
  21. #define lvl_dark (16)
  22. //u16 hscroll[225];// = {0}; //scroll values
  23. bul init_menu_f=FALSE;
  24. bul star_game_f=FALSE;
  25. u32 previous ;
  26. bul initball_f;
  27. char str[16];
  28. bul init_ball_f;
  29. u16 palette[64];
  30. u16 ind;
  31. int level;
  32. bul game_over_f;
  33. Sprite sprites[80];// 0-якорь 0-9 цепь, пауки 10- головка червя,ключ 11-27 брызги 28- ракетк0 29- мячЪ 30- головка бафомета 31-огонёк бафомета 32- тело бафомета 30-80- дождь, бульбашки, мухи
  34. struct myBall
  35. {
  36. int x;
  37. int y;
  38. int dx;
  39. int dy;
  40. int speed;
  41. } bball;
  42.  
  43. int batx;
  44. int baty;
  45. int batdx;
  46. int batspeed;
  47. int batcount;
  48. int pent_disp;
  49. #endif // GLOBALVAR_H_INCLUDED
в Си-модули, где задействованы данные переменные, я ставлю

#include "globalvar.h"

И вот например хочу я в одном из модулей (

nexlevel.c

) присвоить
Листинг программы
  1. init_menu_f=FALSE;
  2. star_game_f=FALSE;
Ругается на повторяющиеся переменные. Причём, если те же самые переменные задать в

main.c

, то всё в порядке. И ещё, оно сперва вроде бы компилится без проблем. Но бинарник на выходе не собирается. А когда повторно нажму компиляцию, то билд-лог пишет следующее:
Листинг программы
  1. -------------- Build: Debug in agressor (compiler: SGDK)---------------
  2.  
  3. Running command: make.exe -f E:\sgdk112\makefile.gen
  4. E:/sgdk112/bin/gcc -BE:/sgdk112/bin -n -T E:/sgdk112/md.ld -nostdlib out/sega.o @out/cmd_ E:/sgdk112/lib/libmd.a E:/sgdk112/lib/libgcc.a -o out/rom.out
  5. out/src/arcanoid.o:(.bss+0x0): multiple definition of `init_menu_f'
  6. out/src/arachnid.o:(.bss+0x0): first defined here
  7. out/src/arcanoid.o:(.bss+0x1): multiple definition of `star_game_f'
  8. out/src/arachnid.o:(.bss+0x1): first defined here
  9. out/src/baphomet.o:(.bss+0x0): multiple definition of `init_menu_f'
  10. out/src/arachnid.o:(.bss+0x0): first defined here
  11. out/src/baphomet.o:(.bss+0x1): multiple definition of `star_game_f'
  12. out/src/arachnid.o:(.bss+0x1): first defined here
  13. out/src/behemoth.o:(.bss+0x0): multiple definition of `init_menu_f'
  14. out/src/arachnid.o:(.bss+0x0): first defined here
  15. out/src/behemoth.o:(.bss+0x1): multiple definition of `star_game_f'
  16. out/src/arachnid.o:(.bss+0x1): first defined here
  17. out/src/dark.o:(.bss+0x0): multiple definition of `init_menu_f'
  18. out/src/arachnid.o:(.bss+0x0): first defined here
  19. out/src/dark.o:(.bss+0x1): multiple definition of `star_game_f'
  20. out/src/arachnid.o:(.bss+0x1): first defined here
  21. out/src/fonanimate.o:(.bss+0x0): multiple definition of `init_menu_f'
  22. out/src/arachnid.o:(.bss+0x0): first defined here
  23. out/src/fonanimate.o:(.bss+0x1): multiple definition of `star_game_f'
  24. out/src/arachnid.o:(.bss+0x1): first defined here
  25. out/src/gorguli.o:(.bss+0x0): multiple definition of `init_menu_f'
  26. out/src/arachnid.o:(.bss+0x0): first defined here
  27. out/src/gorguli.o:(.bss+0x1): multiple definition of `star_game_f'
  28. out/src/arachnid.o:(.bss+0x1): first defined here
  29. out/src/jaws.o:(.bss+0x0): multiple definition of `init_menu_f'
  30. out/src/arachnid.o:(.bss+0x0): first defined here
  31. out/src/jaws.o:(.bss+0x1): multiple definition of `star_game_f'
  32. out/src/arachnid.o:(.bss+0x1): first defined here
  33. out/src/jesus.o:(.bss+0x0): multiple definition of `init_menu_f'
  34. out/src/arachnid.o:(.bss+0x0): first defined here
  35. out/src/jesus.o:(.bss+0x1): multiple definition of `star_game_f'
  36. out/src/arachnid.o:(.bss+0x1): first defined here
  37. out/src/leviathan.o:(.bss+0x0): multiple definition of `init_menu_f'
  38. out/src/arachnid.o:(.bss+0x0): first defined here
  39. out/src/leviathan.o:(.bss+0x1): multiple definition of `star_game_f'
  40. out/src/arachnid.o:(.bss+0x1): first defined here
  41. out/src/lighting.o:(.bss+0x0): multiple definition of `init_menu_f'
  42. out/src/arachnid.o:(.bss+0x0): first defined here
  43. out/src/lighting.o:(.bss+0x1): multiple definition of `star_game_f'
  44. out/src/arachnid.o:(.bss+0x1): first defined here
  45. out/src/lilith.o:(.bss+0x0): multiple definition of `init_menu_f'
  46. out/src/arachnid.o:(.bss+0x0): first defined here
  47. out/src/lilith.o:(.bss+0x1): multiple definition of `star_game_f'
  48. out/src/arachnid.o:(.bss+0x1): first defined here
  49. out/src/lyapanimate.o:(.bss+0x0): multiple definition of `init_menu_f'
  50. out/src/arachnid.o:(.bss+0x0): first defined here
  51. out/src/lyapanimate.o:(.bss+0x1): multiple definition of `star_game_f'
  52. out/src/arachnid.o:(.bss+0x1): first defined here
  53. out/src/main.o:(.bss+0x0): multiple definition of `init_menu_f'
  54. out/src/arachnid.o:(.bss+0x0): first defined here
  55. out/src/main.o:(.bss+0x1): multiple definition of `star_game_f'
  56. out/src/arachnid.o:(.bss+0x1): first defined here
  57. out/src/menu.o:(.bss+0x0): multiple definition of `init_menu_f'
  58. out/src/arachnid.o:(.bss+0x0): first defined here
  59. out/src/menu.o:(.bss+0x1): multiple definition of `star_game_f'
  60. out/src/arachnid.o:(.bss+0x1): first defined here
  61. out/src/nextlevel.o:(.bss+0x0): multiple definition of `init_menu_f'
  62. out/src/arachnid.o:(.bss+0x0): first defined here
  63. out/src/nextlevel.o:(.bss+0x1): multiple definition of `star_game_f'
  64. out/src/arachnid.o:(.bss+0x1): first defined here
  65. out/src/raiders.o:(.bss+0x0): multiple definition of `init_menu_f'
  66. out/src/arachnid.o:(.bss+0x0): first defined here
  67. out/src/raiders.o:(.bss+0x1): multiple definition of `star_game_f'
  68. out/src/arachnid.o:(.bss+0x1): first defined here
  69. out/src/rotor.o:(.bss+0x0): multiple definition of `init_menu_f'
  70. out/src/arachnid.o:(.bss+0x0): first defined here
  71. out/src/rotor.o:(.bss+0x1): multiple definition of `star_game_f'
  72. out/src/arachnid.o:(.bss+0x1): first defined here
  73. out/src/tride.o:(.bss+0x0): multiple definition of `init_menu_f'
  74. out/src/arachnid.o:(.bss+0x0): first defined here
  75. out/src/tride.o:(.bss+0x1): multiple definition of `star_game_f'
  76. out/src/arachnid.o:(.bss+0x1): first defined here
  77. out/src/worm.o:(.bss+0x0): multiple definition of `init_menu_f'
  78. out/src/arachnid.o:(.bss+0x0): first defined here
  79. out/src/worm.o:(.bss+0x1): multiple definition of `star_game_f'
  80. out/src/arachnid.o:(.bss+0x1): first defined here
  81. make: *** [out/rom.out] Error 1
  82. Process terminated with status 2 (0 minute(s), 0 second(s))
  83. 0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Решение задачи: «Множественное объявление переменных»

textual
Листинг программы
  1. extern bul init_menu_f;
  2. extern bul star_game_f;
  3. extern u32 previous;
  4. extern bul initball_f;
  5.  
  6. extern char str[16];
  7. ...
  8.  
  9. extern Sprite sprites[80];
  10.  
  11. extern struct myBall
  12. {
  13.   int x;
  14.   int y;
  15.   int dx;
  16.   int dy;
  17.   int speed;
  18. } bball;
  19. ...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы