title: Can I determine if an argument is string literal?
body: <p>Is it possible to determine if an argument passed in macro or function is a string literal at compile time or run time? </p>
  
  <p>For example,</p>
  
  <pre><code>#define is_string_literal(X)
  ...
  ...   
  
  is_string_literal("hello") == true;
  const char * p = "hello";
  is_string_literal(p) == false;
  </code></pre>
  
  <p>or</p>
  
  <pre><code>bool is_string_literal(const char * s);
  
  is_string_literal("hello") == true;
  const char * p = "hello";
  is_string_literal(p) == false;
  </code></pre>
  
  <p>Thanks.</p>