Search code examples
c++-clipragma

#pragma managed(push, on) and #pragma managed(push, off) in C++/CLI?


What is the difference between #pragma managed(push, off) and #pragma managed(push, on)?

When we need to use #pragma managed(push, on) instead of #pragma managed(push, off)?


Solution

  • It's obvious - "off" turns managed code off, "on" - turns it on.
    We use #pragma managed(push, on) when we need to save state and turn it on.
    In common case, in header file, we don't know if managed code enabled, so we enable it:

    #pragma once
    #pragma managed(push, on)
    public ref class Foo
    {
        ...
    };
    #pragma managed(pop)