What is the concept, shall this style of header guards work both with C and C++ mode?

If I visit a new file, my_header.hpp (in this case c++-mode is active in the buffer), and insert file:empty with SRecorder, then I get the following:
/** my_header.hpp ---
... */
#ifndef my_header_hpp
#define my_header_hpp 1

#endif // my_header_hpp

However if I open a new file my_header.h (c-mode), and do the same thing, I get this:
/** my_header.hpp ---
... */
#ifndef MY_HEADER_H
#define MY_HEADER_H 1

#endif // MY_HEADER_H

Is this the desired behaviour? I use cedet from bzr, with emacs 24.2.1

Thank You!

2013/1/18 Eric M. Ludlam <eric@siege-engine.com>
On 01/15/2013 01:41 PM, Lluís wrote:

Eric M Ludlam writes:
Hi Lluis,

I agree with the typical use being all uppercase for for C code macros, such as:

#define MYHEADER_H 1


I wonder if it is instead better to tweak the template to upcase on a
per-usecase basis (see patch), or always for that symbol.

I'm curious what other C / C++ developers think.  Is a same-case symbol of the
filename useful?

I've never got to need it, but you never know; so I'd go for your patch (note
that my patch also contains a fix on the symbol generation).

Ok, I'll check in a mix of the two then after running the unit tests.

BTW, I don't really use srecode very much, but I'm curious how would you
implement the following header guard pattern (which I use very often):

* take the file path relative to the project root
* eliminate uninformative prefix directories (e.g., "src/" or "include/")

I'd go into srecode/cpp.el and add a new dictionary entry for the :c argument, perhaps PROJECT_FILENAME_SYMBOL, and calculate it.  EDE can tell you the file name with file-relative-name against (ede-toplevel-project default-directory) and the current file.

* replace the directory separator with "__"
* replace symbols by "_"

Your new code snippet would do some of that.

* upcase

Probably in the use of the new dictionary entry.

So, for example, "foo/bar.h" would be "FOO__BAR_H".

This concept seems useful.  The attached patch adds a new argument called :project that could be used to add a variable similar to what you asked for.

I tried it out, and it seems to work ok.


Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
Cedet-devel mailing list

Best regards,
Norbert Bukuli