Set symbol visibility to hidden for RMW and RCL packages

What’s the reason behind setting this in rcl?

rcl_set_symbol_visibility_hidden(${PROJECT_NAME} LANGUAGE "C")

This caused me some troubles since I was trying to use some rcl functions in my application.
The linker immediately told me that some of them were hidden (and indeed I saw the RCL_LOCAL macro).
However, it was also not able to link against other functions marked as RCL_PUBLIC.
Then I noticed this line in the CMakeLists.txt, however the linker was not giving any hints for what concerns the RCL_PUBLIC functions hidden by the aforementioned line.

I opened a question on ROSAnswers about how to set the logger programmatically since all these functions are hidden.
https://answers.ros.org/question/329532/ros2-how-to-programmatically-set-rosout-logging-handler/