Home > Backend Development > C++ > body text

Can Global Variable Initialization in C Ignore Dependencies?

Patricia Arquette
Release: 2024-10-28 06:48:02
Original
354 people have browsed it

Can Global Variable Initialization in C   Ignore Dependencies?

Global Initialization Order in C : Ignoring Dependencies

Problem:

In a code snippet provided, the order of global variable initialization appears to ignore dependencies. Specifically, the constructor method of a struct is being called before the struct instance is declared.

Answer:

1. Initialization Order of Globals:

  • Global variables in a single translation unit (source file) are initialized in the order in which they are defined.
  • However, the initialization order of global variables in different translation units is unspecified.

2. Dependency Ignorace in Initialization:

Yes, the order of initialization of globals ignores dependencies. This means that a global variable may be initialized before another global variable on which it depends.

3. Ensuring Proper Initialization Order:

To ensure that the constructor of Foo is called before initializing dummy, the following steps can be taken:

  • Define globalFoo before dummy in the same translation unit.
  • Use a static pointer to the global instance. The pointer will be initialized to null before any dynamic initialization occurs.
  • In addToGlobal, check if the pointer is null. If it is, then addToGlobal creates the global Foo instance.

The above is the detailed content of Can Global Variable Initialization in C Ignore Dependencies?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!