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

SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

은진 송씨 목차 역사 본관 분파 인물 조선 왕실과의 인척 관계 집성촌 항렬자 인구 같이 보기 각주 둘러보기 메뉴은진 송씨세종실록 149권, 지리지 충청도 공주목 은진현