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;








1















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










share|improve this question

















  • 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

















1















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










share|improve this question

















  • 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













1












1








1


1






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










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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 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












  • 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







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












1 Answer
1






active

oldest

votes


















1














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>





share|improve this answer























  • Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.

    – rotalcomo
    Mar 26 at 4:42










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
);



);













draft saved

draft discarded


















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









1














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>





share|improve this answer























  • Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.

    – rotalcomo
    Mar 26 at 4:42















1














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>





share|improve this answer























  • Thanks! I wasn't checking the INCLUDE_OPTIONAL_H flag in the right spot.

    – rotalcomo
    Mar 26 at 4:42













1












1








1







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>





share|improve this answer













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>






share|improve this answer












share|improve this answer



share|improve this answer










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

















  • 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








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.



















draft saved

draft discarded
















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript