Форум программистов, компьютерный форум CyberForum.ru

Функция, в функции main() или общие переменные для нескольких функций - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
30.10.2012, 20:33     Функция, в функции main() или общие переменные для нескольких функций #1
Делаю мелкую игрушку, в консоли, ради забавы и столкнулся с 1 проблемой:
Невозможно, создавать функцию в функции, вынеся эту функцию за пределы main()
И скомпилировав, написало, что эта функция ссылается на переменные, которые ВНЕ зоны ЕЁ видимости.
Попытавшись, вытащить за пределы main() все переменные, мне написало, что эти переменные, ВООБЩЕ НИКОМУ не принадлдежат!

Так вот в чем вопрос:
Можно ли создать функцию в функции? Если да, то как.
Если нет, то как тогда сделать ОБЩИЕ переменные, для двух( и более) функций, включая main()?

Если есть вопросы, и неясности спросите, уточню.
P.S. Пишу в Dev-C++ (хотя от VS 2008, особо не отличаются...) (доп инфа =))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2012, 20:33     Функция, в функции main() или общие переменные для нескольких функций
Посмотрите здесь:

Написать прогамму в которой в функцию передаються 2 переменные сравниваються и выстраиваються в порядке убывания функция main выводиться на экран C++
C++ Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
Непонимание работы с аргументами для функции main C++
Хочется чтоб функция main узнала число набитое счётчиком в функции god C++
C++ Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
30.10.2012, 20:39     Функция, в функции main() или общие переменные для нескольких функций #2
Цитата Сообщение от Xipxop Посмотреть сообщение
Если нет, то как тогда сделать ОБЩИЕ переменные, для двух( и более) функций, включая main()?
Глобальные переменные (зло) или передавать как аргументы в функцию.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
30.10.2012, 20:43     Функция, в функции main() или общие переменные для нескольких функций #3
C++ умеет замыкания (функции в функциях). Но со специфичным синтаксисом и только с С++11. Гуглите в сторону слов "лямбда" и "С++11".

Вам же, думаю, лучше подойдут объекты. У них есть поля, которые являются общими переменными для кучки функций — методов объекта.
Байт
 Аватар для Байт
13954 / 8785 / 1222
Регистрация: 24.12.2010
Сообщений: 15,905
30.10.2012, 20:43     Функция, в функции main() или общие переменные для нескольких функций #4
Вы не в ПЛ/1 случайно раньше работали? В Сях каждая функция есть отдельная лексическая единица и вложенными они быть никак быть не могут.
Почитайте еще про область видимости.
Впрочем, я думаю что проблема не велика. Лучше на примере. Выложите ваш код (если он больше 50 строк, лучше приложить архивом)
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
30.10.2012, 20:49  [ТС]     Функция, в функции main() или общие переменные для нескольких функций #5
У меня есть функция, которая изменяет и берет сразу много переменных. (насчет их сбора непроблема int pli(int i))

Как же передать все значения, тем переменным, которые должны были изменится, и незначит, что предется создать вместо 1 функции функций 6, тк каждая будет возвращать 1 параметр, который будет присваиваться, переменной, внутри main()...
Что возможно, будет давать больше лагов чем глобалки...

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
#include <iostream>
#include <stdlib.h> //очистка экрана  system("cls");
#include <conio.h>  //_getch
//#include "maps.h"   //где хранятся карты
 
using namespace std;
 
 
int main(){
 
char but;                //Сама кнопка
int ch=0;                //Номер кнопки.
int x=0,y=0; //Координаты x и y.
int xMax=15;             //Мах размер карты по X
int yMax=20;             //Мах размер карты по Y
char map[15][20];        //двумерный массив карты
char hero='O';           //Персонаж
char kyda='>';           //Куда смотрит персонаж. ^-вверх, _-вниз, >-вправо, <-Влево
char voda='~';           //вода
bool mona=true;          //Можно стрелять?
const char pyla='.';           //Пуля
int xPyla[50],yPyla[50];     //Координаты Пули
bool Rpyla[50];              //Пуля Жива?
char Kpyla[50];              //Куда летит пуля?  ^-вверх, _-вниз, >-вправо, <-Влево
char map2[15][20];       //Теневая карта
int free=0;         //свободный слот, для массивов
 
//Иницилизация массивов
for (int i=0; i<=50; i++)
{
    xPyla[i]=0;
    yPyla[i]=0;
    Rpyla[i]=false;
}
 
//Иницилизация матрицы карты
for (int i = 0; i< xMax; i++)      //Строки
{
    for (int j = 0; j< yMax; j++)  //столбцы
    {
        map[i][j] = ' ';         //То, чем карта заполняется
        map2[i][j] =' ';
    }
}
 
map[1][5]=voda;    map2[1][5]=voda;
map[1][6]=voda;    map2[1][6]=voda;
map[1][7]=voda;    map2[1][7]=voda;
map[1][8]=voda;    map2[1][8]=voda;
 
map[0][0]=hero;  //Установка на карте нашего персонажа
 
LetitPyla(){
    
    for (int i=0; i<=50; i++)
            {
              if (Rpyla[i])
              {
                if (xPyla[i]==xMax-1 || xPyla[i]==0 || yPyla[i]==yMax-1 || yPyla[i]==0)
                  {
                    map[xPyla[i]][yPyla[i]]=' ';
                    xPyla[i]=0;
                    yPyla[i]=0;
                    Rpyla[i]=false;
                  }
                if (Rpyla[i])
                {
                  if (Kpyla[i]=='_')
                  {
                    map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                    xPyla[i]++;
                    map[xPyla[i]][yPyla[i]] = pyla;
                  }
                  else if (Kpyla[i]=='^')
                      {
                        map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                        xPyla[i]--;
                        map[xPyla[i]][yPyla[i]] = pyla;
                      }
                      else if (Kpyla[i]=='>')
                          {
                            map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]++;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                          else
                          {
                            map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]--;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                }
              }
           }
}
 
while (1)
{
    system("cls"); // вызов функции очистки экрана
 
    for (int i = 0; i < xMax; i++)
    {
        for (int j = 0; j < yMax; j++)
        {
            cout << map[i][j]; // в циклах поэлементно выводится массив
        }
        cout << "\n"; // переход на новую строку после каждого "ряда"
    }
    cout << x << " " << y << "\n";
    cout << "Kod knopki: " << ch << "\n";
    cout << "Kyda smotrit pers: " << kyda << "\n";
    
    but=_getch();
    ch = static_cast<int>(but);     //узнаем какая кнопка нажата
 
    switch (ch)
    {
        case -32:
        break;
        case 27:      //Esc
            exit(0);
        break;
        case 75:     //Кнопка Влево
            if (y!=0)
            {
              if (map[x][y-1]!=voda)  //проверяем туда можно пройти
              {
                map[x][y] = map2[x][y];   // "Убираем" объект со старой координаты
                y--;               // изменяем координаты
                map[x][y] = hero;  // "рисуем" объект на новом месте
              }
            }
            kyda='<';            //Куда смотрит персонаж
            if (y==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 77:    //Кнопка Вправо
            if (y<19)
            {
              if (map[x][y+1]!=voda)
              {
                map[x][y] = map2[x][y];
                y++;
                map[x][y] = hero;
              }
            }
            kyda='>';
            if (y==19) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 80:    //Кнопка Вниз
            if (x<14)
            {
              if (map[x+1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x++;
                map[x][y] = hero;
              }
            }
            kyda='_';
            if (x==14) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 72:    //Кнопка Вверх
            if (x>0)
            {
              if (map[x-1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x--;
                map[x][y] = hero;
              }
            }
            kyda='^';
            if (x==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 32:   //ПРОбел
            if (mona)
             {
               Rpyla[free]=true;
               if (kyda=='_')
               {
                 map[x+1][y]=pyla;
                 xPyla[free]=x+1;
                 yPyla[free]=y;
                 Kpyla[free]='_';
                 free++;
                 if (free>190) {free=0;}
               }
               else if (kyda=='^')
                   {
                     map[x-1][y]=pyla;
                     xPyla[free]=x-1;
                     yPyla[free]=y;
                     Kpyla[free]='^';
                     free++;
                     if (free>190) {free=0;}
                   }
                   else if (kyda=='>')
                       {
                         map[x][y+1]=pyla;
                         yPyla[free]=y+1;
                         xPyla[free]=x;
                         Kpyla[free]='>';
                         free++;
                         if (free>190) {free=0;}
                       }
                       else 
                       {
                         map[x][y-1]=pyla;
                         yPyla[free]=y-1;
                         xPyla[free]=x;
                         Kpyla[free]='<';
                         free++;
                         if (free>190) {free=0;}
                       }
             }
             LetitPyla();
        break;
    }
}
_getch();
return 0;
}


сама функция LetitPyla()
которую я хочу "выделить" из main()
Какже я буду возвращать каждую переменную, темболее разных типо, при том, что там полно условий...?

Добавлено через 2 минуты
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
C++ умеет замыкания (функции в функциях). Но со специфичным синтаксисом и только с С++11. Гуглите в сторону слов "лямбда" и "С++11".

Вам же, думаю, лучше подойдут объекты. У них есть поля, которые являются общими переменными для кучки функций — методов объекта.
А вот, тут можно по подробнее, про Объекты?
Jupiter
30.10.2012, 20:49
  #6

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Вы не в ПЛ/1 случайно раньше работали?
скроее уж в JS

Байт
 Аватар для Байт
13954 / 8785 / 1222
Регистрация: 24.12.2010
Сообщений: 15,905
30.10.2012, 20:53     Функция, в функции main() или общие переменные для нескольких функций #7
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
C++ умеет замыкания (функции в функциях). Но со специфичным синтаксисом и только с С++11.
Вы меня чрезвычайно расстроили Цивилизация движется, оказывается, вовсе не туда, где мне хотелось бы заниматься программизмом...
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
30.10.2012, 20:53  [ТС]     Функция, в функции main() или общие переменные для нескольких функций #8
Цитата Сообщение от Jupiter Посмотреть сообщение

Не по теме:


скроее уж в JS

С JS (если правильно понимаю JavaScript) я не работал, и мне он не понравился..
ПЛ/1, я не знаю что такое, (разве, что в паскале писал...)

("бред" про функцию в функции, я сам придумал =))
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
30.10.2012, 21:00     Функция, в функции main() или общие переменные для нескольких функций #9
А не пробовали создать класс с объектом "пуля"?
И уже его использовать? Например ту же функцию "летит пуля" сделать методом класса?
или хотя бы передавать этой функии объект со всеми параметрами
Байт
 Аватар для Байт
13954 / 8785 / 1222
Регистрация: 24.12.2010
Сообщений: 15,905
30.10.2012, 21:02     Функция, в функции main() или общие переменные для нескольких функций #10

Не по теме:

Был у меня такой приятель - Окама. У него была бритва. Ох бы он как побрил этот С-11 ! Да и плюсам бы не поздоровилось



Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Глобальные переменные (зло)
согласен. Но выбираю меньшее
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
30.10.2012, 21:02     Функция, в функции main() или общие переменные для нескольких функций #11
Цитата Сообщение от Байт Посмотреть сообщение
согласен. Но выбираю меньшее
Смотря что называть меньшим =)
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
30.10.2012, 21:07     Функция, в функции main() или общие переменные для нескольких функций #12
Цитата Сообщение от Xipxop Посмотреть сообщение
А вот, тут можно по подробнее, про Объекты?
Ну вот у вас есть какая-то пила. У неё есть какое-то положение и скорость. Вы делаете класс объектов "Пила":
C++
1
2
3
4
class Saw {
    double x, y;
    double v_x, v_y;
};
Теперь каждый объект типа Saw будет таскать с собой эти четыре переменные. Можете добавить ему метод, допустим, move():
C++
1
2
3
4
5
void Saw::move(double dt)
{
    x += v_x * dt;
    y += v_y * dt;
}
А потом вызвать этот метод специально для какого-то объекта:
C++
1
2
3
Saw theSaw(1.0, 4.0, 0.1, 0.4); // создаём пилу по имени theSaw
 
theSaw.move(1.0); // для пилы theSaw прошла очередная секунда
Если этой пиле надо какая-то внешняя переменная, то создаёте в объекте поле, которое будет хранить или копию этой переменной, или ссылку на неё (смотря, чего ожидается).

Цитата Сообщение от Xipxop Посмотреть сообщение
("бред" про функцию в функции, я сам придумал =))
Это далеко не бред. Эта идея хорошо проработана и реализована далеко не в одном языке программирования лет 50 уже как.

Цитата Сообщение от Байт Посмотреть сообщение
Вы меня чрезвычайно расстроили Цивилизация движется, оказывается, вовсе не туда, где мне хотелось бы заниматься программизмом...
К чему это?..
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
30.10.2012, 23:08  [ТС]     Функция, в функции main() или общие переменные для нескольких функций #13
Я видно не совсем понял тебя, да и я видно не правильно понимаю реализацию Объектов, в массиве, и работа с этими объектами, и занесение их в переменные, дальнейшая работа с ними, и удаление, с заполнением удалившихся, новыми, причем, надо будет знать какая переменная где...

Короче, вот сама игра, в целости. (ну тупом, варианте немного глюченом)(нужно откомпилировать, и посмотреть, суть игры...)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
#include <iostream>
#include <stdlib.h> //очистка экрана  system("cls");
#include <conio.h>  //_getch
//#include "maps.h"   //где хранятся карты
 
using namespace std;
 
int main(){
 
char but;                //Сама кнопка
int ch=0;                //Номер кнопки.
int x=0,y=0; //Координаты x и y.
int xMax=15;             //Мах размер карты по X
int yMax=20;             //Мах размер карты по Y
char map[15][20];        //двумерный массив карты
char hero='O';           //Персонаж
char kyda='>';           //Куда смотрит персонаж. ^-вверх, _-вниз, >-вправо, <-Влево
char voda='~';           //вода
bool mona=true;          //Можно стрелять?
char pyla='.';           //Пуля
int xPyla[200],yPyla[200];     //Координаты Пули
bool Rpyla[200];              //Пуля Жива?
char Kpyla[200];              //Куда летит пуля?  ^-вверх, _-вниз, >-вправо, <-Влево
char map2[15][20];       //Теневая карта
int free=0;         //свободный слот, для массивов
 
//Иницилизация массивов
for (int i=0; i<=200; i++)
{
    xPyla[i]=0;
    yPyla[i]=0;
    Rpyla[i]=false;
}
 
//Иницилизация матрицы карты
for (int i = 0; i< xMax; i++)      //Строки
{
    for (int j = 0; j< yMax; j++)  //столбцы
    {
        map[i][j] = ' ';         //То, чем карта заполняется
        map2[i][j] =' ';
    }
}
 
map[1][5]=voda;    map2[1][5]=voda;
map[1][6]=voda;    map2[1][6]=voda;
map[1][7]=voda;    map2[1][7]=voda;
map[1][8]=voda;    map2[1][8]=voda;
 
map[0][0]=hero;  //Установка на карте нашего персонажа
 
while (1)
{
    system("cls"); // вызов функции очистки экрана
 
    for (int i = 0; i < xMax; i++)
    {
        for (int j = 0; j < yMax; j++)
        {
            cout << map[i][j]; // в циклах поэлементно выводится массив
        }
        cout << "\n"; // переход на новую строку после каждого "ряда"
    }
    cout << x << " " << y << "\n";
    cout << "Kod knopki: " << ch << "\n";
    cout << "Kyda smotrit pers: " << kyda << "\n";
    
    but=_getch();
    ch = static_cast<int>(but);     //узнаем какая кнопка нажата
 
    switch (ch)
    {
        case -32:
            for (int i=0; i<=200; i++)
            {
              if (Rpyla[i])
              {
                if (xPyla[i]==xMax-1 || xPyla[i]==0 || yPyla[i]==yMax-1 || yPyla[i]==0)
                  {
                    map[xPyla[i]][yPyla[i]]=' ';
                    xPyla[i]=0;
                    yPyla[i]=0;
                    Rpyla[i]=false;
                  }
                if (Rpyla[i])
                {
                  if (Kpyla[i]=='_')
                  {
                    map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                    xPyla[i]++;
                    map[xPyla[i]][yPyla[i]] = pyla;
                  }
                  else if (Kpyla[i]=='^')
                      {
                        map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                        xPyla[i]--;
                        map[xPyla[i]][yPyla[i]] = pyla;
                      }
                      else if (Kpyla[i]=='>')
                          {
                            map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]++;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                          else
                          {
                            map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]--;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                }
              }
              else
              {
                        
              }
           }
        break;
        case 27:      //Esc
            exit(0);
        break;
        case 75:     //Кнопка Влево
            if (y!=0)
            {
              if (map[x][y-1]!=voda)  //проверяем туда можно пройти
              {
                map[x][y] = map2[x][y];   // "Убираем" объект со старой координаты
                y--;               // изменяем координаты
                map[x][y] = hero;  // "рисуем" объект на новом месте
              }
            }
            kyda='<';            //Куда смотрит персонаж
            if (y==0) {mona=false;} else {mona=true;}
        break;
        case 77:    //Кнопка Вправо
            if (y<19)
            {
              if (map[x][y+1]!=voda)
              {
                map[x][y] = map2[x][y];
                y++;
                map[x][y] = hero;
              }
            }
            kyda='>';
            if (y==19) {mona=false;} else {mona=true;}
        break;
        case 80:    //Кнопка Вниз
            if (x<14)
            {
              if (map[x+1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x++;
                map[x][y] = hero;
              }
            }
            kyda='_';
            if (x==14) {mona=false;} else {mona=true;}
        break;
        case 72:    //Кнопка Вверх
            if (x>0)
            {
              if (map[x-1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x--;
                map[x][y] = hero;
              }
            }
            kyda='^';
            if (x==0) {mona=false;} else {mona=true;}
        break;
        case 32:   //ПРОбел
            if (mona)
             {
               Rpyla[free]=true;
               if (kyda=='_')
               {
                 map[x+1][y]=pyla;
                 xPyla[free]=x+1;
                 yPyla[free]=y;
                 Kpyla[free]='_';
                 free++;
                 if (free>190) {free=0;}
               }
               else if (kyda=='^')
                   {
                     map[x-1][y]=pyla;
                     xPyla[free]=x-1;
                     yPyla[free]=y;
                     Kpyla[free]='^';
                     free++;
                     if (free>190) {free=0;}
                   }
                   else if (kyda=='>')
                       {
                         map[x][y+1]=pyla;
                         yPyla[free]=y+1;
                         xPyla[free]=x;
                         Kpyla[free]='>';
                         free++;
                         if (free>190) {free=0;}
                       }
                       else 
                       {
                         map[x][y-1]=pyla;
                         yPyla[free]=y-1;
                         xPyla[free]=x;
                         Kpyla[free]='<';
                         free++;
                         if (free>190) {free=0;}
                       }
             }
        break;
    }
}
_getch();
return 0;
}


Как же мне спокойно оттуда отсоеденить: case -32....breake; (Тоесть её внутрености)(просто этот -32, выполняется очень часто, что приводит к лагам и вылетам...)
Вот, кстати как я пытался делать, ужасно конечно... =)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
#include <iostream>
#include <stdlib.h> //очистка экрана  system("cls");
#include <conio.h>  //_getch
//#include "maps.h"   //где хранятся карты
 
using namespace std;
 
class Pyla {
    int xPyla[50],yPyla[50];     //Координаты Пули
    const char pyla='.';         //Пуля
    bool Rpyla[50];              //Пуля Жива?
    char Kpyla[50];             //Куда летит пуля?  ^-вверх, _-вниз, >-вправо, <-Влево
    
    //Иницилизация массивов
    for (int i=0; i<=50; i++)
    {
      xPyla[i]=0;
      yPyla[i]=0;
      Rpyla[i]=false;
    }
};
 
void Pyla::move(char map[15][20], map2[15][20], pyla)
{
    for (int i=0; i<=50; i++)
            {
              if (Rpyla[i])
              {
                if (xPyla[i]==xMax-1 || xPyla[i]==0 || yPyla[i]==yMax-1 || yPyla[i]==0)
                  {
                    map[xPyla[i]][yPyla[i]]=' ';
                    xPyla[i]=0;
                    yPyla[i]=0;
                    Rpyla[i]=false;
                  }
                if (Rpyla[i])
                {
                  if (Kpyla[i]=='_')
                  {
                    return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                    xPyla[i]++;
                    map[xPyla[i]][yPyla[i]] = pyla;
                  }
                  else if (Kpyla[i]=='^')
                      {
                        return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                        xPyla[i]--;
                        map[xPyla[i]][yPyla[i]] = pyla;
                      }
                      else if (Kpyla[i]=='>')
                          {
                            return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]++;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                          else
                          {
                            return map[xPyla[i]][yPyla[i]] = map2[xPyla[i]][yPyla[i]];
                            yPyla[i]--;
                            map[xPyla[i]][yPyla[i]] = pyla;
                          }
                }
              }
           }
}
 
int main(){
 
char but;                //Сама кнопка
int ch=0;                //Номер кнопки.
int x=0,y=0; //Координаты x и y.
int xMax=15;             //Мах размер карты по X
int yMax=20;             //Мах размер карты по Y
char map[15][20];        //двумерный массив карты
char hero='O';           //Персонаж
char kyda='>';           //Куда смотрит персонаж. ^-вверх, _-вниз, >-вправо, <-Влево
char voda='~';           //вода
bool mona=true;          //Можно стрелять?
char map2[15][20];       //Теневая карта
int free=0;         //свободный слот, для массивов
 
//Иницилизация матрицы карты
for (int i = 0; i< xMax; i++)      //Строки
{
    for (int j = 0; j< yMax; j++)  //столбцы
    {
        map[i][j] = ' ';         //То, чем карта заполняется
        map2[i][j] =' ';
    }
}
 
map[1][5]=voda;    map2[1][5]=voda;
map[1][6]=voda;    map2[1][6]=voda;
map[1][7]=voda;    map2[1][7]=voda;
map[1][8]=voda;    map2[1][8]=voda;
 
map[0][0]=hero;  //Установка на карте нашего персонажа
 
while (1)
{
    system("cls"); // вызов функции очистки экрана
 
    for (int i = 0; i < xMax; i++)
    {
        for (int j = 0; j < yMax; j++)
        {
            cout << map[i][j]; // в циклах поэлементно выводится массив
        }
        cout << "\n"; // переход на новую строку после каждого "ряда"
    }
    cout << x << " " << y << "\n";
    cout << "Kod knopki: " << ch << "\n";
    cout << "Kyda smotrit pers: " << kyda << "\n";
    
    but=_getch();
    ch = static_cast<int>(but);     //узнаем какая кнопка нажата
 
    switch (ch)
    {
        case -32:
        break;
        case 27:      //Esc
            exit(0);
        break;
        case 75:     //Кнопка Влево
            if (y!=0)
            {
              if (map[x][y-1]!=voda)  //проверяем туда можно пройти
              {
                map[x][y] = map2[x][y];   // "Убираем" объект со старой координаты
                y--;               // изменяем координаты
                map[x][y] = hero;  // "рисуем" объект на новом месте
              }
            }
            kyda='<';            //Куда смотрит персонаж
            if (y==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 77:    //Кнопка Вправо
            if (y<19)
            {
              if (map[x][y+1]!=voda)
              {
                map[x][y] = map2[x][y];
                y++;
                map[x][y] = hero;
              }
            }
            kyda='>';
            if (y==19) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 80:    //Кнопка Вниз
            if (x<14)
            {
              if (map[x+1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x++;
                map[x][y] = hero;
              }
            }
            kyda='_';
            if (x==14) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 72:    //Кнопка Вверх
            if (x>0)
            {
              if (map[x-1][y]!=voda)
              {
                map[x][y] = map2[x][y];
                x--;
                map[x][y] = hero;
              }
            }
            kyda='^';
            if (x==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 32:   //ПРОбел
            if (mona)
             {
               Rpyla[free]=true;
               if (kyda=='_')
               {
                 map[x+1][y]=pyla;
                 xPyla[free]=x+1;
                 yPyla[free]=y;
                 Kpyla[free]='_';
                 free++;
                 if (free>190) {free=0;}
               }
               else if (kyda=='^')
                   {
                     map[x-1][y]=pyla;
                     xPyla[free]=x-1;
                     yPyla[free]=y;
                     Kpyla[free]='^';
                     free++;
                     if (free>190) {free=0;}
                   }
                   else if (kyda=='>')
                       {
                         map[x][y+1]=pyla;
                         yPyla[free]=y+1;
                         xPyla[free]=x;
                         Kpyla[free]='>';
                         free++;
                         if (free>190) {free=0;}
                       }
                       else 
                       {
                         map[x][y-1]=pyla;
                         yPyla[free]=y-1;
                         xPyla[free]=x;
                         Kpyla[free]='<';
                         free++;
                         if (free>190) {free=0;}
                       }
             }
             LetitPyla();
        break;
    }
}
_getch();
return 0;
}



Я одного непойму, что вы все так придираетесь, к Глобалкам???
Есть одна замечательная игра: Warcraft 3, и там есть редактор карт, и там встроеный свой язык "Jass", и в нем спокойно "обитают" Глобальные переменные, и локальные переменные,(которые надо: local integer i=2 .... i=null) Почему, данная "примитивная игра", спокойно их использует, (да и думаю, многие игры, включая MMORPG, НЕ могут обойтись без Глобалок!)
Вложения
Тип файла: rar Tanciki.rar (285.4 Кб, 3 просмотров)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
31.10.2012, 00:21     Функция, в функции main() или общие переменные для нескольких функций #14
Цитата Сообщение от Xipxop Посмотреть сообщение
Я одного непойму, что вы все так придираетесь, к Глобалкам???
Когда у Вас будет несколько десятков файлов в проекте, узнаете =)
Байт
 Аватар для Байт
13954 / 8785 / 1222
Регистрация: 24.12.2010
Сообщений: 15,905
31.10.2012, 11:13     Функция, в функции main() или общие переменные для нескольких функций #15
Цитата Сообщение от Croessmah Посмотреть сообщение
Когда у Вас будет несколько десятков файлов в проекте, узнаете =)
У меня в проекте 120 файлов (специально для вас подсчитал), использую около сотни глобальных переменных (так получилось), плюс есть еще десяток проектов, связанных с этим по общим модулям, веду этот проект 15 лет, и никаких особых неприятностей это пока не приносит.
Чтоб вас еще больше удивить, добавлю что среди глобальных есть и структурные...
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
31.10.2012, 18:21  [ТС]     Функция, в функции main() или общие переменные для нескольких функций #16
Разобравшись, как сделать глобальные переменные, то встал еще 1 вопрос.
Могут, ли переменные, двумя функциями, которые (по истечению "случайности") сделались одновременно, заменить, неправильно?

Есть такое:
... //функция 1
map[1][2]='s'
...

... //функция 2
map[1][2]='A'
...

Случается событие, что они выполняются одновременно, и происходят сбои, а переменной map[1][2], которая становится переменной, которая вообще тут НЕ ПРИЧЕМ...

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
#include <iostream>
#include <stdlib.h> //очистка экрана  system("cls");
#include <conio.h>  //_getch
//#include "maps.h"   //где хранятся карты
 
using namespace std;
 
class Global
{
public:
static  int xPyla[50],yPyla[50];     //Координаты Пули
static  char pyla;         //Пуля
static  bool Rpyla[50];              //Пуля Жива?
static  char Kpyla[50];             //Куда летит пуля?  ^-вверх, _-вниз, >-вправо, <-Влево
static  int xMax;             //Мах размер карты по X
static  int yMax;             //Мах размер карты по Y
static  char map[15][20];        //двумерный массив карты
static  char map2[15][20];       //Теневая карта
};
 
int Global::xPyla[50];
int Global::yPyla[50];
int Global::xMax=15;
int Global::yMax=20;
char Global::pyla;
bool Global::Rpyla[50];
char Global::Kpyla[50];
char Global::map[15][20];
char Global::map2[15][20];
 
void LetitPyla()
{
    Global::pyla='.';
    for (int i=0; i<=50; i++)
            {
              if (Global::Rpyla[i])
              {
                if (Global::xPyla[i]==Global::xMax-1 || Global::xPyla[i]==0 || Global::yPyla[i]==Global::yMax-1 || Global::yPyla[i]==0)
                  {
                    Global::map[Global::xPyla[i]][Global::yPyla[i]]=' ';
                    Global::xPyla[i]=0;
                    Global::yPyla[i]=0;
                    Global::Rpyla[i]=false;
                  }
                if (Global::Rpyla[i])
                {
                  if (Global::Kpyla[i]=='_')
                  {
                    Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::map2[Global::xPyla[i]][Global::yPyla[i]];
                    Global::xPyla[i]++;
                    Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::pyla;
                  }
                  else if (Global::Kpyla[i]=='^')
                      {
                        Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::map2[Global::xPyla[i]][Global::yPyla[i]];
                        Global::xPyla[i]--;
                        Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::pyla;
                      }
                      else if (Global::Kpyla[i]=='>')
                          {
                            Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::map2[Global::xPyla[i]][Global::yPyla[i]];
                            Global::yPyla[i]++;
                            Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::pyla;
                          }
                          else
                          {
                            Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::map2[Global::xPyla[i]][Global::yPyla[i]];
                            Global::yPyla[i]--;
                            Global::map[Global::xPyla[i]][Global::yPyla[i]] = Global::pyla;
                          }
                }
              }
           }
}
 
int main(){
 
char but;                //Сама кнопка
int ch=0;                //Номер кнопки.
int x=0,y=0; //Координаты x и y.
char hero='O';           //Персонаж
char kyda='>';           //Куда смотрит персонаж. ^-вверх, _-вниз, >-вправо, <-Влево
char voda='~';           //вода
bool mona=true;          //Можно стрелять?
int free=0;         //свободный слот, для массивов
 
Global::pyla='.';
 
//Иницилизация массивов
for (int i=0; i<=50; i++)
{
    Global::xPyla[i]=0;
    Global::yPyla[i]=0;
    Global::Rpyla[i]=false;
}
 
//Иницилизация матрицы карты
for (int i = 0; i< Global::xMax; i++)      //Строки
{
    for (int j = 0; j< Global::yMax; j++)  //столбцы
    {
        Global::map[i][j] = ' ';         //То, чем карта заполняется
        Global::map2[i][j] =' ';
    }
}
 
Global::map[1][5]=voda;    Global::map2[1][5]=voda;
Global::map[1][6]=voda;    Global::map2[1][6]=voda;
Global::map[1][7]=voda;    Global::map2[1][7]=voda;
Global::map[1][8]=voda;    Global::map2[1][8]=voda;
 
Global::map[0][0]=hero;  //Установка на карте нашего персонажа
 
while (1)
{
    system("cls"); // вызов функции очистки экрана
 
    for (int i = 0; i < Global::xMax; i++)
    {
        for (int j = 0; j < Global::yMax; j++)
        {
            cout << Global::map[i][j]; // в циклах поэлементно выводится массив
        }
        cout << "\n"; // переход на новую строку после каждого "ряда"
    }
    cout << x << " " << y << "\n";
    cout << "Kod knopki: " << ch << "\n";
    cout << "Kyda smotrit pers: " << kyda << "\n";
    
    but=_getch();
    ch = static_cast<int>(but);     //узнаем какая кнопка нажата
 
    switch (ch)
    {
        case -32:
        break;
        case 27:      //Esc
            exit(0);
        break;
        case 75:     //Кнопка Влево
            if (y!=0)
            {
              if (Global::map[x][y-1]!=voda)  //проверяем туда можно пройти
              {
                Global::map[x][y] = Global::map2[x][y];   // "Убираем" объект со старой координаты
                y--;               // изменяем координаты
                Global::map[x][y] = hero;  // "рисуем" объект на новом месте
              }
            }
            kyda='<';            //Куда смотрит персонаж
            if (y==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 77:    //Кнопка Вправо
            if (y<19)
            {
              if (Global::map[x][y+1]!=voda)
              {
                Global::map[x][y] = Global::map2[x][y];
                y++;
                Global::map[x][y] = hero;
              }
            }
            kyda='>';
            if (y==19) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 80:    //Кнопка Вниз
            if (x<14)
            {
              if (Global::map[x+1][y]!=voda)
              {
                Global::map[x][y] = Global::map2[x][y];
                x++;
                Global::map[x][y] = hero;
              }
            }
            kyda='_';
            if (x==14) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 72:    //Кнопка Вверх
            if (x>0)
            {
              if (Global::map[x-1][y]!=voda)
              {
                Global::map[x][y] = Global::map2[x][y];
                x--;
                Global::map[x][y] = hero;
              }
            }
            kyda='^';
            if (x==0) {mona=false;} else {mona=true;}
            LetitPyla();
        break;
        case 32:   //ПРОбел
            if (mona)
             {
               Global::Rpyla[free]=true;
               if (kyda=='_')
               {
                 Global::map[x+1][y]=Global::pyla;
                 Global::xPyla[free]=x+1;
                 Global::yPyla[free]=y;
                 Global::Kpyla[free]='_';
                 free++;
                 if (free>190) {free=0;}
               }
               else if (kyda=='^')
                   {
                     Global::map[x-1][y]=Global::pyla;
                     Global::xPyla[free]=x-1;
                     Global::yPyla[free]=y;
                     Global::Kpyla[free]='^';
                     free++;
                     if (free>190) {free=0;}
                   }
                   else if (kyda=='>')
                       {
                         Global::map[x][y+1]=Global::pyla;
                         Global::yPyla[free]=y+1;
                         Global::xPyla[free]=x;
                         Global::Kpyla[free]='>';
                         free++;
                         if (free>190) {free=0;}
                       }
                       else 
                       {
                         Global::map[x][y-1]=Global::pyla;
                         Global::yPyla[free]=y-1;
                         Global::xPyla[free]=x;
                         Global::Kpyla[free]='<';
                         free++;
                         if (free>190) {free=0;}
                       }
             }
             LetitPyla();
        break;
    }
}
_getch();
return 0;
}


Что, тут не так? Или я неправильно инициирую глобалки, или неправельна функция LetitPyla.
Про прошевствии, многоразового, нажатия пробела,в разные стороны(активирования функции), происходят необычные вещи...
Вложения
Тип файла: rar test04_1.rar (285.6 Кб, 1 просмотров)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
31.10.2012, 18:35     Функция, в функции main() или общие переменные для нескольких функций #17
Цитата Сообщение от Байт Посмотреть сообщение
У меня в проекте 120 файлов (специально для вас подсчитал), использую около сотни глобальных переменных (так получилось), плюс есть еще десяток проектов, связанных с этим по общим модулям, веду этот проект 15 лет, и никаких особых неприятностей это пока не приносит.
Чтоб вас еще больше удивить, добавлю что среди глобальных есть и структурные...
Вот если мне сейчас начать разбирать Ваш проект - я помру пока найду переменные, где они и как объявлены =)
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
31.10.2012, 18:40  [ТС]     Функция, в функции main() или общие переменные для нескольких функций #18
Цитата Сообщение от Croessmah Посмотреть сообщение
Вот если мне сейчас начать разбирать Ваш проект - я помру пока найду переменные, где они и как объявлены =)
1) Для этого есть комментарии
2) Каждой глобальной переменной, делается префикс: Globals_...
3) Объявление, обычно в #include или в вверху, после #include, (это же логично!)


И вообще, вы вот ухищряетесь, умудряетесь не использовать Глобальные переменные, через return... (и др. сада-маза способами, в которых ФИГ без ПОЛНЫХ комментарий, не разберешь! Которые, еще больше требуют памяти!)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
31.10.2012, 18:52     Функция, в функции main() или общие переменные для нескольких функций #19
Цитата Сообщение от Xipxop Посмотреть сообщение
1) Для этого есть комментарии
Будете писать комментарии при каждом использовании данной переменной?
Цитата Сообщение от Xipxop Посмотреть сообщение
2) Каждой глобальной переменной, делается префикс: Globals_...
Переменная глобальная, а мне, как человеку, который первый раз смотрит на Ваш код не известно что это за переменная и за что она отвечает, где изменяется и тому подобное, я бы хотел, чтобы у меня вся информация о том, что мне нужно была перед глазами.

Цитата Сообщение от Xipxop Посмотреть сообщение
3) Объявление, обычно в #include или в вверху, после #include, (это же логично!)
Если брать проект, про который писал Байт, то в каком из 120 файлов мне их искать?

Добавлено через 4 минуты
Цитата Сообщение от Байт Посмотреть сообщение
У меня в проекте 120 файлов (специально для вас подсчитал), использую около сотни глобальных переменных (так получилось), плюс есть еще десяток проектов, связанных с этим по общим модулям, веду этот проект 15 лет, и никаких особых неприятностей это пока не приносит.
Чтоб вас еще больше удивить, добавлю что среди глобальных есть и структурные...
У меня на работе программа для управления тепло генератором, работает на винде. В исходниках несколько папок с кучей файлов. Банально найти main.cpp или stdafx.hpp проблематично. Благо, что есть 6 томов документации
P.S. Как раз сейчас пойду на работу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2012, 18:59     Функция, в функции main() или общие переменные для нескольких функций
Еще ссылки по теме:

C++ алгоритм работы функции,когда функция вызывается в main
Аргументы для функции main() C++
Написать программу, в которой задана произвольная функция вызывается из функции main () C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Xipxop
 Аватар для Xipxop
481 / 9 / 2
Регистрация: 28.12.2011
Сообщений: 150
31.10.2012, 18:59  [ТС]     Функция, в функции main() или общие переменные для нескольких функций #20
Цитата Сообщение от Croessmah Посмотреть сообщение
Будете писать комментарии при каждом использовании данной переменной?
Всем известные слова: Только разработчику(тот кто написал данный код), ясен смысл, каждой переменной.
Если, вы работаете, в фирме или компании, где над этим кодом будут работать, несколько программистов, то вы будете обязаны(или обязуют), делать везде комментарии! Иначе ваш код никто нормально прочесть не сможет!...



Цитата Сообщение от Croessmah Посмотреть сообщение
Переменная глобальная, а мне, как человеку, который первый раз смотрит на Ваш код не известно что это за переменная и за что она отвечает, где изменяется и тому подобное, я бы хотел, чтобы у меня вся информация о том, что мне нужно была перед глазами.
Тут-же, опять выступает: При объявлении переменной, делается комментарий, который говорит, об назначении этой переменной, а также смысла принимаемых ею значений. (как у меня: char Kpyla='_' //Куда летит Пуля, _-Вниз, ^-вверх, >-вправо, <-влево...) И вообще, комментарии, хороший тон программистов.


Цитата Сообщение от Croessmah Посмотреть сообщение
Если брать проект, про который писал Байт, то в каком из 120 файлов мне их искать?
В заголовке каждого, файла, или при использовании переменной (2 раза на переменную в файле), писать комментарий, где она была инициирована.

Не по теме:

А можно вообще, в каждом из 120 файлов, в конце файла писать, Упс, а глобальные переменные то, в другом месте!



Добавлено через 2 минуты
Чем мы отличаемся от машин, да, только тем, что для нас нужны комментарии!
И мы все сделаны не одинаково, а значит НЕ одинаково мыслим...

Не по теме:

Создается, впечатление, что вы панически избегаете комментариев, и обругиваете Глобалки на пустом месте...

Yandex
Объявления
31.10.2012, 18:59     Функция, в функции main() или общие переменные для нескольких функций
Ответ Создать тему
Опции темы

Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru