Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #103374
| Newsgroups | comp.lang.c |
|---|---|
| Date | 2017-02-07 08:24 -0800 |
| References | <ddcc4bba-8f05-4537-9deb-1d5c759602f5@googlegroups.com> <o7cnp0$esp$1@dont-email.me> <af4dd6a4-bfa9-4865-aebb-ea5e0c9c25e2@googlegroups.com> |
| Message-ID | <d2c01da2-047d-4b52-baab-fd0e468df376@googlegroups.com> (permalink) |
| Subject | Re: How to compile several C files |
| From | Alla _ <modelling.data@gmail.com> |
On Tuesday, February 7, 2017 at 6:56:36 PM UTC+3, Alla _ wrote:
> On Tuesday, February 7, 2017 at 6:08:02 PM UTC+3, James Kuyper wrote:
> > On 02/07/2017 09:10 AM, Alla _ wrote:
> > > Hello!
> > >
> > > I have a program, which I would like to separate into two C files,
> > > and two .h files. The non-separated version works, but it would
> > > be logically correct to separate it into two parts.
> > > Actually, I already have done so. When I tried to
> > > compile two parts, I got a cryptic message saying that there were
> > > some duplicates. Before digging deeper into that error message,
> > > I would like to found out if I correctly compile both files, and what
> > > are the rules.
> > > First file is named proforma.c; second one sql.c :
> > ...
> > > (1) I include both header files in proforma.c and in sql.c
> > > (2) run in Terminal:
> > > gcc -Wall -Werror -Wextra -std=c99 `mysql_config --cflags --libs` proforma.c sql.c -o
> >
> > I cannot say whether the mysql_config part is correct, but the rest
> > seems fine, except for one detail: the -o option always requires a
> > filename argument. It tells gcc what name you want the output file to
> > have; if you don't want to override the default file name (a.out, in
> > this case), you don't need the -o option.
> >
> > The exact text of the error message would be helpful. From my experience
> > with gcc, I suspect that it's cryptic only because you're unfamiliar
> > with the relevant terminology.
> > Since the header files are both included in both *.c files, an obvious
> > possibility is that the duplicate thing it's referring to is something
> > in the header files that qualifies as an external definition of an
> > object or function. External definitions should only appear in *.c
> > files; what should appear in the corresponding *.h file is a
> > declaration. People being unclear about the distinction between a
> > declaration and a definition is a common cause of such problems.
>
> First, thank you everyone for these very helpful comments.
>
> As to the paragraph above, yes, it seems to the be the case. I will
> have to look more thoroughly into this.
> I have put all typedefs in proforma.h, as well as all function declarations,
> and I have also added structures' declarations and pointers to those
> structures, because those are used by proforma.c and by sql.c
>
> Here is how it looks like (I am not yet posting the gcc error message
> because, first, I want to try it again, and if I get the same error I will
> post it):
> proforma.h
> /** Proforma header file **/
>
> #ifndef H_PROFORMA_
> #define H_PROFORMA_
>
> #define LINE_SIZE 1024
> #define YEARS 15
> #define INPUT_YEARS 5
> #define INC_LINES 12
> #define BALANCE_LINES 21
> #define NAME_SIZE 40
> #define STAT_TAX 0.38
> #define FORECAST_INTEREST 0.10 //WACC
> #define MAX_FIELD_WIDTH 9
>
> typedef struct data_1 {
> int year;
> double sales;
> double cogs;
> double gross_profit;
> double sga;
> double oper_inc;
> double dep_amor;
> double oper_prof;
> double int_exp;
> double gain_loss;
> double pretax_inc;
> double tax_exp;
> double net_inc;
> } income_st;
>
> typedef struct data_2 {
> int cs_year;
> double cs_sales;
> double cs_cogs;
> double cs_gross_profit;
> double cs_sga;
> double cs_oper_inc;
> double cs_dep_amor;
> double cs_oper_prof;
> double cs_int_exp;
> double cs_gain_loss;
> double cs_pretax_inc;
> double cs_tax_exp;
> double cs_net_inc;
> } cs_income_st;
>
> typedef struct balance_sheet {
> double cash;
> double ar;
> double inv;
> double o_cur_a;
> double t_cur_a;
> double gross_ppe;
> double acc_dep;
> double net_ppe;
> double intang;
> double ta;
> double ap;
> double tp;
> double o_cur_l;
> double t_cur_l;
> double ltd;
> double o_l;
> double tl;
> double se;
> double tle;
> double average_ta;
> } balance;
>
> typedef struct cs_balance_sheet {
> double cs_cash;
> double cs_ar;
> double cs_inv;
> double cs_o_cur_a;
> double cs_t_cur_a;
> double cs_gross_ppe;
> double cs_acc_dep;
> double cs_net_ppe;
> double cs_intang;
> double cs_ta;
> double cs_ap;
> double cs_tp;
> double cs_o_cur_l;
> double cs_t_cur_l;
> double cs_ltd;
> double cs_o_l;
> double cs_tl;
> double cs_se;
> double cs_tle;
> } cs_balance;
>
> typedef struct assumptions {
> double gr_sales;
> double av_cogs;
> double av_gross_profit;
> double av_sga;
> double av_oper_inc;
> double av_dep_amor;
> double av_oper_prof;
> double av_int_exp;
> double av_gain_loss;
> double av_pretax_inc;
> double av_tax_exp;
> double av_net_inc;
> double industry_rate;
> double ta_turn;
> } assumptions;
>
> typedef struct offsets {
> int offset_income;
> int offset_cs_income;
> int offset_balance;
> } offsets;
>
> //Structures
> income_st income[YEARS];
> cs_income_st cs_income[YEARS];
> balance bal[YEARS];
> cs_balance cs_bal;
> assumptions av;
>
> //Pointers to structures
> income_st *income_ptr = income;
> cs_income_st *cs_income_ptr = cs_income;
> balance *bs_ptr = bal;
> cs_balance *cs_bs_ptr = &cs_bal;
> assumptions *rates = &av;
>
>
> bool process_files (FILE *input_file_1, FILE *input_file_2,
> income_st *income_ptr,
> cs_income_st *cs_income_ptr,
> balance *bs_ptr,
> cs_balance *cs_bs_ptr,
> assumptions *rates);
>
> bool process_inc (FILE *input_file_1, char *line,
> income_st *income_ptr,
> cs_income_st *cs_income_ptr,
> assumptions *rates,
> offsets *offset_ptr);
>
> bool process_bal (FILE *input_file_2, char *line,
> income_st *income_ptr,
> balance *bs_ptr,
> cs_balance *cs_bs_ptr,
> assumptions *rates,
> offsets *offset_ptr);
>
> int valid_names (char *line, const char *names_1[],
> const char *names_2[],
> size_t line_num, char *name);
>
> char *skip_spaces (char *line);
>
> int get_year(void);
>
> bool check_input_years(char *line, income_st *income_ptr,
> cs_income_st *cs_income_ptr,
> int cur_year);
>
> bool parse_inc_num (char *line, size_t line_num,
> int offset_income,
> int offset_cs_income,
> income_st *income_ptr,
> cs_income_st *cs_income_ptr,
> double *member_product);
>
> bool parse_bal_num (char *line, int offset_balance,
> balance *bs_ptr);
>
> offsets find_struct_member(char *name,
> offsets *offset_ptr);
>
> double rate_depamor_exp(income_st *income_ptr,
> balance *bs_ptr);
>
> double rate_int_exp(income_st *income_ptr,
> balance *bs_ptr);
>
> void pf_sales (income_st *income_ptr,
> assumptions *rates);
>
> void pf_ta (income_st *income_ptr,
> balance *bs_ptr,
> assumptions *rates);
>
> void pf_balance (balance *bs_ptr, cs_balance *cs_bs_ptr);
>
> void pf_income (income_st *income_ptr, assumptions *rates,
> balance *bs_ptr);
>
> double ta_turnover(income_st *income_ptr, balance *bs_ptr);
>
> void ta_proforma_rate(income_st *income_ptr,
> balance *bs_ptr,
> assumptions *rates,
> double *rate_1, double *rate_2);
>
> void csbalance_rates(balance *bs_ptr, cs_balance *cs_bs_ptr);
>
> char *line_alloc(void);
> char *name_alloc(void);
> double industry_rate();
> #endif
Oh dear. I have just realized that I have not deleted those,
now global, arguments in functions' declarations. I am not
sure you will see this message before reading my previous
post. I should have not posted that header before checking
it all over again, as I initially intended ) Apologies.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 06:10 -0800
Re: How to compile several C files Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-02-07 07:02 -0800
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-07 16:03 +0100
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-07 15:06 +0000
Re: How to compile several C files BartC <bc@freeuk.com> - 2017-02-07 15:14 +0000
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-07 16:02 +0000
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 15:42 +0000
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-07 16:19 +0000
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 16:40 +0000
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-07 17:16 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 10:19 +0100
Re: How to compile several C files "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-07 11:51 -0500
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 08:26 -0800
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 16:42 +0000
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 10:14 -0800
Re: How to compile several C files vitale.alla@gmail.com - 2017-02-16 09:49 -0800
Re: How to compile several C files Ian Collins <ian-news@hotmail.com> - 2017-02-08 17:35 +1300
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 10:28 +0100
Re: How to compile several C files Ian Collins <ian-news@hotmail.com> - 2017-02-08 22:43 +1300
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 11:29 +0100
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 10:14 +0100
Re: How to compile several C files James Kuyper <jameskuyper@verizon.net> - 2017-02-07 10:07 -0500
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 07:56 -0800
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 08:24 -0800
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-07 16:44 +0000
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 08:54 -0800
Re: How to compile several C files "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-07 12:20 -0500
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 10:05 -0800
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 18:27 +0000
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 18:40 +0000
Re: How to compile several C files Keith Thompson <kst-u@mib.org> - 2017-02-07 12:22 -0800
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 10:33 +0100
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-08 10:25 -0800
Re: How to compile several C files Keith Thompson <kst-u@mib.org> - 2017-02-07 08:58 -0800
Re: How to compile several C files "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-07 12:07 -0500
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 09:14 -0800
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 17:21 +0000
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 10:14 -0800
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 10:28 -0800
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 18:43 +0000
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 10:55 -0800
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-07 19:28 +0000
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-07 19:51 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 11:25 +0100
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-08 12:11 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 14:58 +0100
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-08 14:23 +0000
Re: How to compile several C files supercat@casperkitty.com - 2017-02-08 07:48 -0800
Re: How to compile several C files Richard Heathfield <rjh@cpax.org.uk> - 2017-02-08 16:09 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 17:23 +0100
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 15:01 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 17:22 +0100
Re: How to compile several C files Keith Thompson <kst-u@mib.org> - 2017-02-08 09:27 -0800
Re: How to compile several C files supercat@casperkitty.com - 2017-02-08 09:51 -0800
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 21:06 +0000
Re: How to compile several C files supercat@casperkitty.com - 2017-02-08 13:20 -0800
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 21:40 +0000
Re: How to compile several C files supercat@casperkitty.com - 2017-02-08 13:49 -0800
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 23:09 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 23:25 +0100
Re: How to compile several C files supercat@casperkitty.com - 2017-02-08 15:17 -0800
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-09 01:17 +0100
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 23:19 +0100
Re: How to compile several C files Keith Thompson <kst-u@mib.org> - 2017-02-08 16:44 -0800
Re: How to compile several C files Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-08 22:32 -0800
Re: How to compile several C files Robert Wessel <robertwessel2@yahoo.com> - 2017-02-09 04:03 -0600
Re: How to compile several C files Ian Collins <ian-news@hotmail.com> - 2017-02-10 07:52 +1300
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 12:12 +0000
Re: How to compile several C files BartC <bc@freeuk.com> - 2017-02-08 13:09 +0000
Re: How to compile several C files Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-02-08 05:14 -0800
Re: How to compile several C files Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-08 15:32 +0000
Re: How to compile several C files David Brown <david.brown@hesbynett.no> - 2017-02-08 15:09 +0100
Re: How to compile several C files Keith Thompson <kst-u@mib.org> - 2017-02-07 09:22 -0800
Re: How to compile several C files Gareth Owen <gwowen@gmail.com> - 2017-02-07 18:29 +0000
Re: How to compile several C files bart4858@gmail.com - 2017-02-07 11:05 -0800
Re: How to compile several C files Keith Thompson <kst-u@mib.org> - 2017-02-07 12:26 -0800
Re: How to compile several C files Barry Schwarz <schwarzb@dqel.com> - 2017-02-07 08:34 -0800
Re: How to compile several C files Alla _ <modelling.data@gmail.com> - 2017-02-07 08:57 -0800
Re: How to compile several C files "James R. Kuyper" <jameskuyper@verizon.net> - 2017-02-07 12:29 -0500
Re: How to compile several C files Manfred <noname@invalid.add> - 2017-02-07 19:02 +0100
csiph-web