После загрузки на исполнение mql5-программы каждой переменной выделяется память в соответствие с типом переменной. Переменные делятся на два типа по уровню доступа - глобальные переменные и локальные переменные, и по классам памяти: входные параметры mql5-программы, статические и автоматические. Каждая переменная при необходимости...
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
这是正确的编译器行为吗?似乎在调用A::f()方法的那一刻,A::i并没有被创建。
什么叫 "创造"?
static只是一种创建耙子 来隐藏全局变量或函数的方法,限制了函数或类的可见性
全局变量的内存始终存在。
是的,对于全局变量来说,初始化顺序 是非常重要的(我的意思是,避免在变量被初始化之前访问它)
这个例子成功了...
。
在上面的例子中,它工作了...
你打算在这个时候改变编译器吗?就个人而言,我希望保持现状。
你会在这个时候改变编译器吗?就个人而言,我希望保持一切原样。
我们不打算改变这种行为。
但是有一个延迟的任务,即检测对全局变量 的访问错误(在初始化之前)。
如果我们实现了这个功能,在编译上面的代码时我们会得到一个警告:A::f()函数被用来初始化A::i,它访问了被初始化的A::i变量。
如果我们实现了这个功能,在编译上述代码时,你会得到一个警告:A::f()函数被用来初始化A::i,它访问了被初始化的A::i变量。
谢谢你!
我们不打算改变行为
那么它就与你的概念相矛盾了,即当声明完成后,一个变量就被认为是被声明的。你为什么一开始就发明了它?如果在一种情况下是这样的,而在另一种情况下是不同的
一种好的语言有统一的规则,而不是相反那么它就与你自己的概念相矛盾了,即当声明完成后,一个变量就被认为是被声明的。你为什么一开始就发明了它?如果在一种情况下是这样,而在另一种情况下是不同的
一种好的语言有统一的规则,而不是相反我是一个完全无知的人,但即使我喝多了,也不会想到(int i = i).......。8(
我是一个完全无知的人,但我即使喝多了,也不会想到这个(int i = i).......8(
那么与原来的例子 的主要区别是什么呢?删除不必要的东西,你就会得到它。
只是那里有很多条线,而这里只有一条。
如果没有编译错误,这里也不应该有(反之亦然),否则就是一团糟了
那么它就与你自己的概念相矛盾了,即当声明完成后,一个变量就被认为是被声明的。你为什么一开始就发明了它?如果在一种情况下是这样,而在另一种情况下是不同的
一种好的语言有统一的规则,而不是相反。与原来的例子 有什么根本区别?去掉多余的东西,你就可以得到它。
只是那里有很多线条,而这里只有一条。
如果没有编译错误,这里也不应该有(反之亦然),否则就会一团糟。
你错了,这不是一回事。
类中静态变量的描述是它的预定义(类似于函数或类的预定义),但事实上,位置只是告诉编译器该变量在内存中的存储位置,以及它应该何时被初始化。