answersLogoWhite

0

Is possible define a structure with extern keyword?

Updated: 8/17/2019
User Avatar

Wiki User

15y ago

Best Answer

extern is used only when there is a variable or a function name. so here's what you can do, typedef struct{ int data; }my_struct; extern my_struct my_new_struct; Compilers takes this as a *type*.

User Avatar

Wiki User

15y ago
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: Is possible define a structure with extern keyword?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Related questions

How java use extern key word which is used in C plus plus?

No extern keyword in Java.


Is global variables are declared within the main function?

Might be, but don't forget the keyword 'extern':int main (void){extern int errno;...}


Define header file with example.?

/* example.h */ #ifndef EXAMPLE_H #define EXAMPLE_H /* I'm a header file */ extern int example_variable; extern void example_function (void); typedef struct example_type { int unused; } example_type; #endif


Why extern long int var is a declaration?

Because it doesn't define the variable. If you want to define it, simply write: long int var;


How do you write a program to illustrate the concept of extern variable?

In order to use extern you have to have at least two files. In first one, let's call it file1.cpp, you will define a variable using extern (in this case belongs to int):...extern int myVar = 0;...Then in file2.cpp file where you have main() you need to write following:extern int myVar;Do not initialize the variable in file2.cpp, or you code will not compile.


What is the function of dos.h?

You can find a copy of that file in here: http://ftp.ibiblio.org/pub/micro/PC-stuff/freedos/files/devel/c/dos.h in case the server is down check the extracted file: #ifndef __DOS_H #define __DOS_H #include <_defs.h> #include <stddef.h> #ifdef __WATCOMC__ #pragma pack( __push, 1 ) #endif struct _R16BIT { unsigned short ax, bx, cx, dx, si, di, es, cs, ss, ds, flags; unsigned char cflag; }; struct _R8BIT { unsigned char al, ah, bl, bh, cl, ch, dl, dh; }; union _INTR { struct _R16BIT x; struct _R8BIT h; }; #define INTR _INTR struct country { int co_date; /* date format */ char co_curr[ 5 ]; /* currency symbol */ char co_thsep[ 2 ]; /* thousands separator */ char co_desep[ 2 ]; /* decimal separator */ char co_dtsep[ 2 ]; /* date separator */ char co_tmsep[ 2 ]; /* time separator */ char co_currstyle; /* currency style */ char co_digits; /* significant digits in currency */ char co_time; /* time format */ long co_case; /* case map */ char co_dasep[ 2 ]; /* data separator */ char co_fill[ 10 ]; /* filler */ }; #define COUNTRY country struct DOSERROR { int de_exterror; /* extended error */ char de_class; /* error class */ char de_action; /* action */ char de_locus; /* error locus */ }; struct date { unsigned int da_year; /* current year */ unsigned char da_day; /* day of the month */ unsigned char da_mon; /* month (1 = Jan) */ }; struct dosdate_t { unsigned char day; /* 1--31 */ unsigned char month; /* 1--12 */ unsigned int year; /* 1980--2099 */ unsigned char dayofweek; /* 0--6; 0 = Sunday */ }; struct devhdr { long dh_next; short dh_attr; unsigned short dh_strat; unsigned short dh_inter; char dh_name[ 8 ]; }; struct dfree { unsigned df_avail; /* Available clusters */ unsigned df_total; /* Total clusters */ unsigned df_bsec; /* Bytes per sector */ unsigned df_sclus; /* Sectors per cluster */ }; struct diskfree_t { unsigned total_clusters; unsigned avail_clusters; unsigned sectors_per_cluster; unsigned bytes_per_sector; }; typedef struct { char drive; char pattern [ 13 ]; char reserved [ 7 ]; char attrib; short time; short date; long size; char nameZ [ 13 ]; } dosSearchInfo; struct fatinfo { char fi_sclus; /* sectors per cluster */ char fi_fatid; /* the FAT id byte */ int fi_nclus; /* number of clusters */ int fi_bysec; /* bytes per sector */ }; struct ffblk { #ifdef __CLIB_LFN__ unsigned short cr_time; /* time of file creation */ unsigned short cr_date; /* date of file creation */ unsigned short ac_time; /* time of last file access */ unsigned short ac_date; /* date of last file access */ char ff_reserved[ 13 ]; /* reserved for use by DOS */ #else char ff_reserved[ 21 ]; /* reserved for use by DOS */ #endif char ff_attrib; /* attribute byte for file */ unsigned short ff_ftime; /* time of last write to file */ unsigned short ff_fdate; /* date of last write to file */ unsigned long ff_fsize; /* length of file in bytes */ #ifdef __CLIB_LFN__ char ff_name[ 256 ]; /* null-terminated filename */ unsigned short lfnhandle;/* DOS LFN support handle */ #else char ff_name[ 13 ]; /* null-terminated filename */ #endif }; struct find_t { #ifdef __CLIB_LFN__ unsigned short cr_time; /* time of file creation */ unsigned short cr_date; /* date of file creation */ unsigned short ac_time; /* time of last file access */ unsigned short ac_date; /* date of last file access */ char reserved[ 13 ]; /* reserved for use by DOS */ #else char reserved[ 21 ]; /* reserved for use by DOS */ #endif char attrib; /* attribute byte for file */ unsigned short wr_time; /* time of last write to file */ unsigned short wr_date; /* date of last write to file */ unsigned long size; /* length of file in bytes */ #ifdef __CLIB_LFN__ char name[ 256 ]; /* null-terminated filename */ unsigned short lfnhandle;/* DOS LFN support handle */ #else char name[ 13 ]; /* null-terminated filename */ #endif }; #define _find_t find_t struct fcb { char fcb_drive; char fcb_name[ 8 ], fcb_ext[ 3 ]; short fcb_curblk, fcb_recsize; long fcb_filsize; short fcb_date; char fcb_resv[ 10 ], fcb_currec; long fcb_random; }; struct xfcb { char xfcb_flag; char xfcb_resv[ 5 ]; char xfcb_attr; struct fcb xfcb_fcb; }; struct dostime_t { unsigned char hour; /* Hours */ unsigned char minute; /* Minutes */ unsigned char second; /* Seconds */ unsigned char hsecond; /* Hundredths of seconds */ }; struct time { unsigned char ti_min; /* minutes */ unsigned char ti_hour; /* hours */ unsigned char ti_hund; /* hundredths of seconds */ unsigned char ti_sec; /* seconds */ }; #ifdef __WATCOMC__ #pragma pack( __pop ) #endif extern int __getversion( void ); extern char ** environ; #define _version (*__getversion)() extern unsigned char _osmajor; extern unsigned char _osminor; extern int absread( int drive, int sects, long lsect, void *buffer ); extern int abswrite( int drive, int sects, long lsect, void *buffer ); extern int allocmem( unsigned size, unsigned *seg ); extern int bdos( int ah, unsigned dx, unsigned al ); extern int bdosptr( int ah, void *argument, unsigned al ); extern int _callint( union INTR *regs ); extern struct COUNTRY * country( int xcode, struct COUNTRY *ct ); extern void ctrlbrk( int ( *handler )( void ) ); extern void delay( unsigned mill ); extern void _disable( void ); extern unsigned _dos_allocmem( unsigned size, unsigned *seg ); extern unsigned _dos_close( int handle ); extern unsigned _dos_creat( const char *path, int attr, unsigned *handle ); extern unsigned _dos_creatnew( const char *path, int attr, unsigned *handle ); extern int __cdecl dosexterror( struct DOSERROR *errblk ); extern unsigned _dos_findfirst( char *filename, int attrib, void *strptr ); extern unsigned _dos_findnext( void *strptr ); extern unsigned _dos_findclose( void *strptr ); extern unsigned _dos_freemem( unsigned seg ); extern void __cdecl _dos_getdate( struct dosdate_t *ptr ); extern unsigned __cdecl _dos_getdiskfree( unsigned char dr, struct diskfree_t *d ); extern unsigned _dos_getdrive( unsigned *disk ); extern unsigned _dos_getfileattr( const char *filename, unsigned *attrs ); extern unsigned __cdecl _dos_getftime( int handle, unsigned *date, unsigned *time ); extern void __cdecl _dos_gettime( struct dostime_t *timeptr ); extern void ( interrupt far * _dos_getvect( unsigned intno ) )( ); extern void _dos_keep( unsigned char retcode, unsigned size ); extern unsigned _dos_open( const char *path, unsigned flags, unsigned *handle ); extern unsigned _dos_read( int handle, void far *buf, unsigned len, unsigned *nread ); extern unsigned _dos_setblock( unsigned newsize, unsigned seg, unsigned *max ); extern void _dos_setdate( struct dosdate_t *ptr ); extern void _dos_setdrive( unsigned disk, unsigned *total ); extern unsigned _dos_setfileattr( const char *filename, unsigned attrs ); extern unsigned _dos_setftime( int handle, unsigned date, unsigned time ); extern unsigned _dos_settime( struct dostime_t *timeptr ); extern void _dos_setvect( unsigned intno, void ( interrupt far *vect )() ); extern time_t dostounix( struct date *date, struct time *time ); extern unsigned _dos_write( int handle, void far *buf, unsigned len, unsigned *bytes ); extern void _enable( void ); extern int freemem( unsigned seg ); extern int getcbrk( void ); extern void __cdecl getdate( struct date *datep ); extern void __cdecl getdfree( unsigned char drive, struct dfree *dtable ); extern char * getdta( void ); extern void getfat( unsigned char drive, struct fatinfo *dtable ); extern void getfatd( struct fatinfo *dtable ); extern unsigned getpsp( void ); extern void __cdecl gettime( struct time *timeptr ); extern void ( interrupt far * getvect( int intno ) )( ); extern int getverify( void ); extern int inp( unsigned id ); extern unsigned inpw( unsigned id ); extern unsigned inport( unsigned id ); extern unsigned char inportb( unsigned id ); extern void keep( unsigned char retcode, unsigned size ); extern void nosound( void ); extern int outp( unsigned id, int value ); extern unsigned outpw( unsigned id, unsigned value ); extern void outport( unsigned id, unsigned value ); extern void outportb( unsigned id, unsigned char value ); extern char * parsfnm( const char *cmdline, struct fcb *ptr, int al ); extern int peek( unsigned seg, unsigned offs ); extern char peekb( unsigned seg, unsigned offs ); extern void poke( unsigned seg, unsigned offs, int value ); extern void pokeb( unsigned seg, unsigned offs, char value ); extern int randbrd( struct fcb *buf, int rnum ); extern int randbwr( struct fcb *buf, int rnum ); extern int setblock( unsigned newsize, unsigned seg ); extern int setcbrk( int value ); extern void setdate( struct date *datep ); extern void setdta( char far *dta ); extern void setpsp( unsigned psp ); extern void settime( struct time *timeptr ); extern void setvect( int intno, void ( interrupt far *vect )() ); extern void setverify( int flag ); extern void sleep( unsigned x ); extern void sound( unsigned frequency ); extern void unixtodos( time_t longtime, struct date *date, struct time *time ); extern int unlink( const char *filename ); #define disable _disable #define enable _enable #define _A_NORMAL 0x00 #define _A_RDONLY 0x01 #define _A_HIDDEN 0x02 #define _A_SYSTEM 0x04 #define _A_VOLID 0x08 #define _A_SUBDIR 0x10 #define _A_ARCH 0x20 #define FA_NORMAL _A_NORMAL #define FA_RDONLY _A_RDONLY #define FA_HIDDEN _A_HIDDEN #define FA_SYSTEM _A_SYSTEM #define FA_LABEL _A_VOLID #define FA_DIREC _A_SUBDIR #define FA_ARCH _A_ARCH #define NFDS 20 #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #define MK_FP( seg, ofs ) ( ( void * )\ ( ( ( unsigned long )( seg ) << 16 ) |\ ( unsigned )( ofs ) ) ) #define FP_SEG(fp) ( ( unsigned )( ( unsigned long )( fp ) >> 16 ) ) #define FP_OFF(fp) ( ( unsigned )( fp ) ) #define __peek( a,b ) ( *( ( int far * ) MK_FP ( ( a ), ( b ) ) ) ) #define __peekb( a,b ) ( *( ( char far * ) MK_FP ( ( a ), ( b ) ) ) ) #define __poke( a,b,c ) ( *( ( int far * ) MK_FP ( (a),(b)) ) = ( int )(c)) #define __pokeb( a,b,c ) ( *( ( char far * ) MK_FP ( (a),(b)) ) = ( char )(c)) #define peek( a,b ) ( *( ( int far * ) MK_FP ( ( a ), ( b ) ) ) ) #define peekb( a,b ) ( *( ( char far * ) MK_FP ( ( a ), ( b ) ) ) ) #define poke( a,b,c ) ( *( ( int far * ) MK_FP ( (a),(b)) ) = ( int )(c)) #define pokeb( a,b,c ) ( *( ( char far * ) MK_FP ( (a),(b)) ) = ( char )(c)) #ifndef __NO_INLINE_FUNCTIONS #pragma aux _enable = "sti"; #pragma aux _disable = "cli"; #pragma aux inp = "in al, dx" parm [dx] value [al] modify [ax dx]; #pragma aux inpw = "in ax, dx" parm [dx] value [ax] modify [ax dx]; #pragma aux inport = "in ax, dx" parm [dx] value [ax] modify [ax dx]; #pragma aux inportb = "in al, dx" parm [dx] value [al] modify [ax dx]; #pragma aux outp = "out dx, al" parm [dx] [al] value [al] modify [ax dx]; #pragma aux outpw = "out dx, ax" parm [dx] [ax] value [ax] modify [ax dx]; #pragma aux outport = "out dx, ax" parm [dx] [ax] modify [ax dx]; #pragma aux outportb = "out dx, al" parm [dx] [al] modify [ax dx]; #endif #endif


How can you make an header file in c language?

Using a text editor. Example: /* myheader.h */ #ifndef MYHEADER_H #define MYHEADER_H extern int myvariable; extern int myfunction (int x, int y, int z); #endif


Can an extern function be defined in a C header file?

Declared is the right word. (Don't define functions in headers, unless you really know what you are doing.)


What does extern C stand for?

"extern" is short of "external" which means outside.


Is it true global variable may have several declaration but only one definition?

Yes, indeed it is. In all the declarations, you need to use the keyword "extern". Rgds, Karthick S.


What is the function of keyword extern?

The extern keyword declares a variable or function and specifies that it has external linkage (its name is visible from files other than the one in which it's defined). When modifying a variable, extern specifies that the variable has static duration (it is allocated when the program begins and deallocated when the program ends). The variable or function may be defined in another source file, or later in the same file. Declarations of variables and functions at file scope are external by default. In C++, when used with a string, extern specifies that the linkage conventions of another language are being used for the declarator(s). C functions and data can be accessed only if they are previously declared as having C linkage. However, they must be defined in a separately compiled translation unit. Microsoft C++ supports the strings "C" and "C++" in the string-literal field. All of the standard include files use the extern "C" syntax to allow the run-time library functions to be used in C++ programs. If you find this info useful Please vote!!!


What value is assigned to extern variable?

Default initial value of extern integral type variable is zero otherwise null.