Это WORKS ..
Помните, что в первый раз, когда вы напечатаете передаваемое значение, вы получите нуль, вы можете использовать его после загрузки Windows, то же самое для всего, что вы хотите кодировать для любого другого компонента.
Первый контроллер
blockquote>try { Stage st = new Stage(); FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/inty360/free/form/MainOnline.fxml")); Parent sceneMain = loader.load(); MainOnlineController controller = loader.<MainOnlineController>getController(); controller.initVariable(99L); Scene scene = new Scene(sceneMain); st.setScene(scene); st.setMaximized(true); st.setTitle("My App"); st.show(); } catch (IOException ex) { Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, null, ex); }
Другой контроллер
blockquote>public void initVariable(Long id_usuario){ this.id_usuario = id_usuario; label_usuario_nombre.setText(id_usuario.toString()); }
Нет стандартного способа сделать это, но некоторые компиляторы имеют аннотации, которые можно использовать для этого, например, в GCC вы можете использовать тег __attribute_pure__
в функции (альтернативно __attribute__((pure))
), чтобы сообщить что функция pure (т.е. не имеет побочных эффектов). Это широко используется в стандартной библиотеке C, так что, например:
char * str = get_some_string();
for ( int i = 0; i < strlen( str ); ++i ) {
str[i] = toupper(str[i]);
}
Может быть оптимизирован компилятором в:
char * str = get_some_string();
int __length = strlen( str );
for ( int i = 0; i < __length; ++ i ) {
str[i] = toupper(str[i]);
}
Функция объявлена в строке .h header as:
extern size_t strlen (__const char *__s)
__THROW __attribute_pure__ __nonnull ((1));
Где __THROW
- исключение без исключения в случае, если он является компилятором C ++, анализирующим функцию, а __nonnull((1))
сообщает компилятору, что первый аргумент не должен быть null (т. е. вызвать предупреждение, если аргумент имеет значение null и используется флаг Wnonnull).
Компилятор не может оптимизировать вызов непрозрачной функции. Однако, если GetCategory
является встроенным и, следовательно, видимым на сайте вызова, компилятору разрешено , и в большинстве случаев он будет оптимизировать его, если он увидит, что он не имеет стороны эффектов, но для этого не требуется.
Чтобы добиться того, чего вы хотите со 100% уверенностью, вам нужно обернуть весь оператор макросом, который будет оценивать пустой оператор для вашей конфигурации выпуска.
Это проблема с кодом режима отладки.
Единственное надежное решение (для вызовов функций) - это весь код отладки внутри самого макроса.
Для Например, вы могли бы использовать следующий код вместо этого:
LOG("message", GetCategory());
Тогда препроцессор уничтожит все заявление в Release, и вам больше не придется об этом беспокоиться.
strlen
, он может иметь аналогичный атрибут, это хороший пример функции, которая известна в стандарте как pure i> так что это был бы хороший кандидат, чтобы разработчики могли использовать этот атрибут. – David Rodríguez - dribeas 8 July 2011 в 12:59