title: Changing access specifiers from private to public in scons?
body: <p>I use scons to build a large project and finally found a line in the SConstruct file that caused a compilation error that I posted here previously:
  <a href="https://stackoverflow.com/questions/47839718/sstream-redeclared-with-public-access-compiler-error?noredirect=1#comment82643486_47839718">sstream redeclared with public access compiler error</a></p>
  
  <p>Here is the line in the SConctruct file:</p>
  
  <p><code>jailbreak_env = env.Clone(CPPDEFINES=[('protected','public'),('private','public')])</code> </p>
  
  <p>If you look at the link for the error message that complains redefining access specifiers in the sstream library, that error no longer comes up when I edited the SConstruct line like so:</p>
  
  <p><code>jailbreak_env = env.Clone(CPPDEFINES=[])</code>                                                              </p>
  
  <p>However I cannot figure out how exactly this fix worked, or even how is it possible to change access specifiers in c++? I spent some time researching around SCons and I learned that Clone() simply creates a new "jailbreak version" of the program but by drastically changing the c++ compiler environment using the CPP_DEFINES variable. But the scons documentation (<a href="http://www.scons.org/doc/0.96.90/HTML/scons-user/a3061.html" rel="nofollow noreferrer">http://www.scons.org/doc/0.96.90/HTML/scons-user/a3061.html</a>) for CPP_DEFINES does not mention being used to change access specifiers as shown above?</p>
  
  <p>Any ideas or pointers for where I should look for an explanation are welcome.</p>