I am using #pragma once
in my .cpp
s and .hpp
s and because of that I get a warning for each file that uses it. I have not found any option to disable this kind of warning, only the thing of #ifndef MY_FILE_H #define MY_FILE_H /*...*/ #endif
.
So would you recommend me to replace each #pragma once
with ifndef
s?
in header:
#define MYFILE_H
// all the header
and in the other files:
#ifndef MYFILE_H
#include "myfile.hpp"
#endif
// the rest of the file
What do you think, is it better to use it like this? Or there is an option to disable the #pragma once
warnings in GCC, that I do not know?
The common approach is to place the guard in the .h file only:
or
The rest of files (other .cpp) should do nothing regarding the guards. You should not get warnings by doing this.
Indeed the
#ifndef
guard can always be used, but just to remove the warning while compiling the source which uses#pragma once
I would recommend to use the-w
option while compiling.e.g.
gcc -w -o <output file> <input file(s)>