For example, for some xcode projects, if I have some places that defines a number at some .cpp files:

    const int PAGE_MAX=5;

and a new requirement comes that needs to change PAGE_MAX, I need to modify the .cpp file, it is violating principle. What if I define PAGE_MAX with macros? eg:

    const int PAGE_MAX=XCODE_MACRO_PAGE_MAX;

but XCODE_MACRO_PAGE_MAX is not defined in other headers ,.c,or .cpp files, instead I define it in the Xcode -> Preprocessor macro sessions :

    XCODE_MACRO_PAGE_MAX=5

when I need to update the value, I open the project in xcode and go to "Preprocessor macro sessions" to change the value of XCODE_MACRO_PAGE_MAX in the UI, eg: from XCODE_MACRO_PAGE_MAX=5 to XCODE_MACRO_PAGE_MAX=6.

While I don't need to edit the .cpp, the macro replaces XCODE_MACRO_PAGE_MAX with the new value, which feels the effect as if changing the .cpp actually when changing the macro value, is it violating open closed principle?