Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix name clash in mach/policy.h and gps.h #1

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion tasks/GPSDTask.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
#include "GPSDTask.hpp"

// workaround for name clash in
// usr/include/mach/policy.h and gpsd/3.15/include/gps.h
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't the workaround be in the header itself ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not really, the problem is that we include libgpsmm.h here which is including gpsd/3.15/include/gps.h using an already used system typedef. From my point of view the right fix would be to change the name in gps.h but this is out of my scope.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ambiguous statement on my side...

"Shouldn't the workaround be in GPSDTask.hpp ?"

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could move it there but the problem only occurs in combination with libgpsmm.h which might not be included by other orogen tasks inherit from this task. Therefore, to not globally undef policy_t I would keep it in the c++ file, No?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am so missing something. Why do you need to define policy_t before including GPSDTask.hpp if the problem is in libgpsmm ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I basically rename policy_t to mach_policy_t insight mach/policy.h using the pre compiler. After that I can undef policy_t which would not be possible if mach/policy.h would have used it for its typedef. Now, the policy_t is free to be used by gps.h for its struct.

#ifdef __APPLE__
#define policy_t mach_policy_t
#include "GPSDTask.hpp"
#undef policy_t
#else
#include "GPSDTask.hpp"
#endif

#include <libgpsmm.h>

using namespace gps;
Expand Down