-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello community,
after finding a minor mistake in a header include file this week, I’ve
wanted to make sure that the GR header files have proper,
non-conflicting include guards.
So I want to open the discussion whether GR would want to change from
#ifndef-based include guards to #pragma once.
What I noticed is:
- there were 881 files that contained the classical
#ifdef MACRO_WHATEVER
#define MACRO_WHATEVER
…
#endif /maybe some comment/
scheme in current master - replacing these with #pragma once has not damaged anything (as far
as one simple make test can tell) - one minor mis-#define was found only which I believe is very
reassuring for our overall code quality (1) (2).
I’ve created a script (3) that checks (4) whether c++ files follow the
classical include guard methodology, and replaces that with a #pragma
once. cmake && make && make test worked fine on the first run which
made me confident enough to push everything (changed headers and the
script) to a branch:
https://github.com/marcusmueller/gnuradio/tree/convert_to_pragma_once
It would be great if people running other toolchains than I do
(gcc4.8.2/x86_64) would check if it breaks stuff.
If there is enough interest and consensus that we might want to switch
over to #pragma once (instead of just doing this “for testing purposes
only”), I think it’d be worthwhile to tackle things that stayed
untouched during automatic conversion:
- .t templates
- the newmod architecture
Greetings,
Marcus
(1) see my pull request against master
(2) however, vocoder/gsm/config.h uses #ifndef CONFIG_H, which I think
is a little bit asking for trouble
(3)
https://github.com/marcusmueller/gnuradio/blob/convert_to_pragma_once/dtools/bin/convert_ifndef_to_pragma_once
(4) checking is done by running it through the C preprocessor once to
get rid of comments and check the first line against an #ifndef macro,
and a second time to check whether defining that macro causes the file
to semantically disappear.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iQEcBAEBAgAGBQJTCR4wAAoJEAFxB7BbsDrLj3oH/0NJi0qUT1Pj5FKMISU31tay
glCG1TG1j9Bj0r/NgaOook0pOgZrv2q5ZCDAJWgEnbxm8iI8NCiyYEorOhmoK5k7
GzACT4OTfQdISEq90zuvRelVxyFcRavxemI3d4hPTad3DHMIxLDzMtdYYROdCG2+
SUNuKzw9CiYPeXPuUNgChUAYxHDZSqCD+MpUBgOCeOtn9wa5eM7bJv8nuITsf0+h
13wW/EdEfQGkVuRyUIQySD2O8zvqNXobmzYRpmYnUkYg2tPxG5Kv6YAqhrFZY9El
hhJrmfI7Z6UK+zbq8Kt6qWHeXMglOGQVwFU1cZ0jZAvpZRiwJTzSeNBpF6LKcbE=
=WNPJ
-----END PGP SIGNATURE-----