Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Const e moduli

  1. #1

    [C] Const e moduli

    Problema:

    ho 3 file (in realtà molti di più)

    dato che, stando agli standard GNU, l'uso di #define è deprecato, quindi è meglio usare const !quando possibile!

    ho il seguente problema a tempo di compilazione:

    In file included from main.c :
    a.h error: conflicting types for ‘VAR’
    b.c error: previous definition of ‘VAR’ was here


    nel main viene incluso il file b.c che contiene (solo) la seguente riga

    #ifundef blabla
    #define blabla
    const char VAR[] = "testo";
    #endif


    in un altro file ( o meglio nel suo header ) a.h le costanti vengono chiamate nel seguente modo

    extern char *VAR;

    -----------------------------------------------
    I produttori sostengono che la causa del prezzo elevato di Cd e Dvd è la pirateria. Una volta debellata la pirateria i prezzi duplicheranno in quanto non si potrà più piratare.

    W WinVista & Palladium & TCPA & Chip Fritz & MIPS 0.18um Made in China!

  2. #2
    codice:
    /* main.c */
    
    #include <stdio.h>
    #include "extern_const.h"
    
    int main (void){
    	printf ("my_extern_const_1: %s;\n", my_extern_const_1);
    	printf ("my_extern_const_2: %s;\n", my_extern_const_2);
    	return 0;
    }
    codice:
    /* extern_const.h */
    
    #ifndef extern_const_h
    #define extern_const_h
    
    extern const char my_extern_const_1 [];
    extern const char * my_extern_const_2;
    
    #endif
    codice:
    /* extern_const.c */
    
    #include "extern_const.h"
    
    const char my_extern_const_1 [] = "my extern const 1";
    const char * my_extern_const_2 = "my extern const 2";
    codice:
    $ gcc --version
    i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
    Copyright (C) 2005 Free Software Foundation, Inc.
    $ gcc -Wall -ansi -pedantic -Wextra -Wconversion main.c extern_const.c
    $ ./a.out 
    my_extern_const_1: my extern const 1;
    my_extern_const_2: my extern const 2;

  3. #3

    humm

    :master:

    Ok, condivido la soluzione, ma è rognosa...
    ...
    alla fine
    ...
    ho preferito inserire 'static const' per consentire le dichiarazioni multiple e dichiarare le costanti direttamente nell'header


    Grazie cmq
    I produttori sostengono che la causa del prezzo elevato di Cd e Dvd è la pirateria. Una volta debellata la pirateria i prezzi duplicheranno in quanto non si potrà più piratare.

    W WinVista & Palladium & TCPA & Chip Fritz & MIPS 0.18um Made in China!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.