Include header file if it exists to redefine macros in CWhat is the difference between #include <filename> and #include “filename”?Why use apparently meaningless do-while and if-else statements in macros?What is the common header format of Python files?In Node.js, how do I “include” functions from my other files?Concatenate multiple files but include filename as section headersHow to fix “Headers already sent” error in PHPHow to pre-compile a C source file without expand the included header file?How to define a macro in a header file from the makefileC includes of includes in headersHow to check if a file exists in Makefile
What is the best way to stacked subscripts for a matrix?
How did the hit man miss?
Was the Ford Model T black because of the speed black paint dries?
What is this welding tool I found in my attic?
How to find the shape parameters of of a beta distribution given the position of two quantiles?
What would be the ideal melee weapon made of "Phase Metal"?
Robbers: The Hidden OEIS Substring
How can I get a player to accept that they should stop trying to pull stunts without thinking them through first?
Does Google Maps take into account hills/inclines for route times?
How to disable wifi in Raspberry Pi 4
How can I deal with a player trying to insert real-world mythology into my homebrew setting?
Should I intentionally omit previous work experience when applying for jobs?
What's the maximum time an interrupt service routine can take to execute on atmega328p?
How might the United Kingdom become a republic?
When casting Eldritch Blast with the Agonizing Blast eldritch invocation, what do I add to my damage roll?
Why would guns not work in the dungeon?
How do Windows version numbers work?
Why was hardware diversification an asset for the IBM PC ecosystem?
How to know whether a Tamron lens is compatible with Canon EOS 60D?
ESTA: "Is your travel to the US occurring in transit to another country?" when going on a cruise
What's the minimum number of sensors for a hobby GPS waypoint-following UAV?
What explains 9 speed cassettes price differences?
What was the definition of "set" that resulted in Russell's Paradox
Can I call 112 to check a police officer's identity in the Czech Republic?
Include header file if it exists to redefine macros in C
What is the difference between #include <filename> and #include “filename”?Why use apparently meaningless do-while and if-else statements in macros?What is the common header format of Python files?In Node.js, how do I “include” functions from my other files?Concatenate multiple files but include filename as section headersHow to fix “Headers already sent” error in PHPHow to pre-compile a C source file without expand the included header file?How to define a macro in a header file from the makefileC includes of includes in headersHow to check if a file exists in Makefile
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have two header files, one that is a library with a number of default macros defined
i.e:
libraryheader.h:
#define ANAME 1
#define BNAME 2
.
.
.
and I want to be able to have another optional header that the user can supply to redefine these macros in the project
optional.h:
#define ANAME 5
#define BNAME 15
.
.
.
The header optional.h doesn't always exist and I only want to include it if it does exist. Is there a way in the makefile or library header to check if this header exists and redefine the macros.
I'm thinking to check if the file exists in the makefile and set a flag by putting the following in the makefile
ifdef $(test -f optional.h && echo "present")
and then somehow check the flag macro in the library header.
But I haven't had any success yet. Thank you
c makefile header preprocessor
add a comment |
I have two header files, one that is a library with a number of default macros defined
i.e:
libraryheader.h:
#define ANAME 1
#define BNAME 2
.
.
.
and I want to be able to have another optional header that the user can supply to redefine these macros in the project
optional.h:
#define ANAME 5
#define BNAME 15
.
.
.
The header optional.h doesn't always exist and I only want to include it if it does exist. Is there a way in the makefile or library header to check if this header exists and redefine the macros.
I'm thinking to check if the file exists in the makefile and set a flag by putting the following in the makefile
ifdef $(test -f optional.h && echo "present")
and then somehow check the flag macro in the library header.
But I haven't had any success yet. Thank you
c makefile header preprocessor
1
Well, you could have your makefile update the compile flags to defineHAS_OPTIONAL_H
macro, and then you can wrap your#include
line in a#ifdef
.
– paddy
Mar 26 at 3:46
2
myprog:CPPFLAGS += $(if $(wildcard optional.h),-include optional.h)
– Matt
Mar 26 at 3:49
add a comment |
I have two header files, one that is a library with a number of default macros defined
i.e:
libraryheader.h:
#define ANAME 1
#define BNAME 2
.
.
.
and I want to be able to have another optional header that the user can supply to redefine these macros in the project
optional.h:
#define ANAME 5
#define BNAME 15
.
.
.
The header optional.h doesn't always exist and I only want to include it if it does exist. Is there a way in the makefile or library header to check if this header exists and redefine the macros.
I'm thinking to check if the file exists in the makefile and set a flag by putting the following in the makefile
ifdef $(test -f optional.h && echo "present")
and then somehow check the flag macro in the library header.
But I haven't had any success yet. Thank you
c makefile header preprocessor
I have two header files, one that is a library with a number of default macros defined
i.e:
libraryheader.h:
#define ANAME 1
#define BNAME 2
.
.
.
and I want to be able to have another optional header that the user can supply to redefine these macros in the project
optional.h:
#define ANAME 5
#define BNAME 15
.
.
.
The header optional.h doesn't always exist and I only want to include it if it does exist. Is there a way in the makefile or library header to check if this header exists and redefine the macros.
I'm thinking to check if the file exists in the makefile and set a flag by putting the following in the makefile
ifdef $(test -f optional.h && echo "present")
and then somehow check the flag macro in the library header.
But I haven't had any success yet. Thank you
c makefile header preprocessor
c makefile header preprocessor
asked Mar 26 at 3:21
rotalcomorotalcomo
314 bronze badges
314 bronze badges
1
Well, you could have your makefile update the compile flags to defineHAS_OPTIONAL_H
macro, and then you can wrap your#include
line in a#ifdef
.
– paddy
Mar 26 at 3:46
2
myprog:CPPFLAGS += $(if $(wildcard optional.h),-include optional.h)
– Matt
Mar 26 at 3:49
add a comment |
1
Well, you could have your makefile update the compile flags to defineHAS_OPTIONAL_H
macro, and then you can wrap your#include
line in a#ifdef
.
– paddy
Mar 26 at 3:46
2
myprog:CPPFLAGS += $(if $(wildcard optional.h),-include optional.h)
– Matt
Mar 26 at 3:49
1
1
Well, you could have your makefile update the compile flags to define
HAS_OPTIONAL_H
macro, and then you can wrap your #include
line in a #ifdef
.– paddy
Mar 26 at 3:46
Well, you could have your makefile update the compile flags to define
HAS_OPTIONAL_H
macro, and then you can wrap your #include
line in a #ifdef
.– paddy
Mar 26 at 3:46
2
2
myprog:CPPFLAGS += $(if $(wildcard optional.h),-include optional.h)
– Matt
Mar 26 at 3:49
myprog:CPPFLAGS += $(if $(wildcard optional.h),-include optional.h)
– Matt
Mar 26 at 3:49
add a comment |
1 Answer
1
active
oldest
votes
As @Matt mentioned in comment "wildcard" can be used.
However, when I tested it using a small program I had to do the following things.
If I include the "optional.h" in my .c file always, then it will give build error when the .h file is not present. Similarly, if I dont include, even if the file is present I will not be able to update the macros. So I did the following in my makefile.
CFLAGS += $(if $(wildcard ./optional.h),-include ./optional.h -DINCLUDE_OPTIONAL_H)
In my .c file I used INCLUDE_OPTIONAL_H for including the optional.h as below.
#ifdef INCLUDE_OPTIONAL_H
#include "optional.h"
#endif
In optional.h, I checked if a macro is already defined and undefined it and then updated it.
#ifdef ANAME
#undef ANAME
#endif
#define ANAME <new_value>
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55349379%2finclude-header-file-if-it-exists-to-redefine-macros-in-c%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As @Matt mentioned in comment "wildcard" can be used.
However, when I tested it using a small program I had to do the following things.
If I include the "optional.h" in my .c file always, then it will give build error when the .h file is not present. Similarly, if I dont include, even if the file is present I will not be able to update the macros. So I did the following in my makefile.
CFLAGS += $(if $(wildcard ./optional.h),-include ./optional.h -DINCLUDE_OPTIONAL_H)
In my .c file I used INCLUDE_OPTIONAL_H for including the optional.h as below.
#ifdef INCLUDE_OPTIONAL_H
#include "optional.h"
#endif
In optional.h, I checked if a macro is already defined and undefined it and then updated it.
#ifdef ANAME
#undef ANAME
#endif
#define ANAME <new_value>
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
add a comment |
As @Matt mentioned in comment "wildcard" can be used.
However, when I tested it using a small program I had to do the following things.
If I include the "optional.h" in my .c file always, then it will give build error when the .h file is not present. Similarly, if I dont include, even if the file is present I will not be able to update the macros. So I did the following in my makefile.
CFLAGS += $(if $(wildcard ./optional.h),-include ./optional.h -DINCLUDE_OPTIONAL_H)
In my .c file I used INCLUDE_OPTIONAL_H for including the optional.h as below.
#ifdef INCLUDE_OPTIONAL_H
#include "optional.h"
#endif
In optional.h, I checked if a macro is already defined and undefined it and then updated it.
#ifdef ANAME
#undef ANAME
#endif
#define ANAME <new_value>
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
add a comment |
As @Matt mentioned in comment "wildcard" can be used.
However, when I tested it using a small program I had to do the following things.
If I include the "optional.h" in my .c file always, then it will give build error when the .h file is not present. Similarly, if I dont include, even if the file is present I will not be able to update the macros. So I did the following in my makefile.
CFLAGS += $(if $(wildcard ./optional.h),-include ./optional.h -DINCLUDE_OPTIONAL_H)
In my .c file I used INCLUDE_OPTIONAL_H for including the optional.h as below.
#ifdef INCLUDE_OPTIONAL_H
#include "optional.h"
#endif
In optional.h, I checked if a macro is already defined and undefined it and then updated it.
#ifdef ANAME
#undef ANAME
#endif
#define ANAME <new_value>
As @Matt mentioned in comment "wildcard" can be used.
However, when I tested it using a small program I had to do the following things.
If I include the "optional.h" in my .c file always, then it will give build error when the .h file is not present. Similarly, if I dont include, even if the file is present I will not be able to update the macros. So I did the following in my makefile.
CFLAGS += $(if $(wildcard ./optional.h),-include ./optional.h -DINCLUDE_OPTIONAL_H)
In my .c file I used INCLUDE_OPTIONAL_H for including the optional.h as below.
#ifdef INCLUDE_OPTIONAL_H
#include "optional.h"
#endif
In optional.h, I checked if a macro is already defined and undefined it and then updated it.
#ifdef ANAME
#undef ANAME
#endif
#define ANAME <new_value>
answered Mar 26 at 4:23
MayurKMayurK
1,4318 silver badges19 bronze badges
1,4318 silver badges19 bronze badges
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
add a comment |
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.
– rotalcomo
Mar 26 at 4:42
add a comment |
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55349379%2finclude-header-file-if-it-exists-to-redefine-macros-in-c%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Well, you could have your makefile update the compile flags to define
HAS_OPTIONAL_H
macro, and then you can wrap your#include
line in a#ifdef
.– paddy
Mar 26 at 3:46
2
myprog:CPPFLAGS += $(if $(wildcard optional.h),-include optional.h)
– Matt
Mar 26 at 3:49