Sponsored Content
Top Forums Programming Typedef does not work to name a type Post 302930923 by achenle on Thursday 8th of January 2015 02:45:35 PM
Old 01-08-2015
Quote:
Originally Posted by shamrock
@achenle:
Embedded spaces in preprocessor #defines are always a cause of confusion and error...however the issue with the OP is one of supplying a compiler statement to a preprocessor...
That was a simple off-the-cuff example to demonstrate the semantic and syntax differences between "typedef" and "#define".

The fact that whitespace is treated completely differently in typedef and #define code is another reason to never replace typedef's with #define's.

If you read the link the OP provided, you'd see his problem is compiling. He's not feeding code to a preprocessor except as part of compiling. And I'd love to see a preprocessor so lame it couldn't handle typedef's, which are part of the language spec.

"Find out what's broken and fix it" is much better than "change this and hope it works".
This User Gave Thanks to achenle For This Post:
 

9 More Discussions You Might Find Interesting

1. Solaris

Conflicting 'typedef' error - Which gcc switch to use?

I am using gcc3.3.5 on solaris2.7. Its a 64 bit compilation I am compiling a file 'plugin.cpp'. It includes mach.h and the complation gives the following error. ----------------------------------------------------------------- mach.h error: conflicting types for `typedef vx_u32_t... (0 Replies)
Discussion started by: amitc
0 Replies

2. Programming

How to typedef

I want to declare char ch as ch_9 with the help of the typedef statement. Thanks (1 Reply)
Discussion started by: krishna_sicsr
1 Replies

3. Programming

typedef struct forward declaration

I've google a bit about this and couldn't find an answer. Actually I read that it can't be done. Basically I've defined the following structure and typedef it as follows. stuct Name { }; typdef struct Name Name. and right after it, defined some API that use it. void blabla(Name*... (6 Replies)
Discussion started by: emitrax
6 Replies

4. UNIX for Dummies Questions & Answers

Any Beos versions work on AMD64-type PCs?

Preparing to get my first home PC via custom-build shop. It will have three hard disk drives...one to be used only for trial of various OSs. Was hoping to test out Haiku, but according to 'supported architectures' table at Wikipedia ("Comparison of open source operating systems"), it only works on... (3 Replies)
Discussion started by: Varsel
3 Replies

5. Programming

typedef help

Hi! This is part of my my code : typedef struct{ int x; char na; char sur; } Stu; typedef struct{ Stu *arr; int size; int sort; } Stus; I want to ask how can i free() the matrix arr. I tried free(arr), free(Stus.arr) and i get errors with gcc. My problem, in... (3 Replies)
Discussion started by: giampoul
3 Replies

6. Shell Programming and Scripting

Need Role Name for my type of work

Hi , I am planning for the interview . I am having one question here , I worked on unix and shellscripting for 2 years Done- Ø Coding and testing of Server Monitoring ShellScripts Ø Deployment on UNIX production environment I have written so many shellscripts for monitoring... (5 Replies)
Discussion started by: aish11
5 Replies

7. Programming

Compilation problem with typedef

I am getting confused compiling a program that gives me the following error ../../../tomso/algeb/vector.hpp:19:9: error: ‘Vector' does not name a type typedef Vector<float> Vecflt; (1 Reply)
Discussion started by: kristinu
1 Replies

8. Programming

Event driven programming / epoll / typedef union / session data array

Sorry for the “word salad” subject, but I wanted to cast a wide net for help. I've created an IP (Internet Protocol) server which serves HTTP, SMTP, and FTP requests. As you probably know, they all require creating a socket, listening on it, accepting connections, and then having a short... (3 Replies)
Discussion started by: John S.
3 Replies

9. Programming

Help me to understand strange 'typedef ... ' in some source...

Working on some source I've found some strange declaration in included header file. I am looking for someone's help to understand me that syntax's, as it is fine (it is compiled without any complain,) but for me it seems out of any sense! Acctually, it warning by CC compiler: " Warning: Implicit... (1 Reply)
Discussion started by: alex_5161
1 Replies
types.h(3HEAD)							      Headers							    types.h(3HEAD)

NAME
types.h, types - primitive system data types SYNOPSIS
#include <sys/types.h> DESCRIPTION
The data types defined in <sys/types.h> are as follows: 32-bit Solaris The data types listed below are defined in <sys/types.h> for 32-bit Solaris. typedef struct { int r[1]; } *physadr; typedef long clock_t; typedef long daddr_t; typedef char * caddr_t; typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong_t; typedef unsigned long ino_t; typedef long uid_t; typedef long gid_t; typedef ulong_t nlink_t; typedef ulong_t mode_t; typedef short cnt_t; typedef long time_t; typedef int label_t[10]; typedef ulong_t dev_t; typedef long off_t; typedef long pid_t; typedef long paddr_t; typedef int key_t; typedef unsigned char use_t; typedef short sysid_t; typedef short index_t; typedef short lock_t; typedef unsigned int size_t; typedef long clock_t; typedef long pid_t; 64-bit Solaris The data types listed below are defined in <sys/types.h> for 64-bit Solaris. typedef long blkcnt_t typedef long clock_t typedef long daddr_t typedef ulong_t dev_t typedef ulong_t fsblkcnt_t typedef ulong_t fsfilcnt_t typedef int gid_t typedef int id_t typedef long ino_t typedef int key_t typedef uint_t major_t typedef uint_t minor_t typedef uint_t mode_t typedef uint_t nlink_t typedef int pid_t typedef ptrdiff_t intptr_t typedef ulong_t rlim_t typedef ulong_t size_t typedef uint_t speed_t typedef long ssize_t typedef long suseconds_t typedef uint_t tcflag_t typedef long time_t typedef int uid_t typedef int wchar_t Preprocessor Symbols For 32-bit programs, pointers and the C data types int and long are all 32-bit quantities. For 64-bit programs, pointers and the C data type long are defined as 64-bit quantities. The preprocessor symbol _ILP32, made visible by the inclusion of <sys/types.h>, can be used with the preprocessor #ifdef construct to define sections of code that will be compiled only as part of a 32-bit version of a given C program. The preprocessor symbol _LP64 can be used in the same way to define sections of code that will be compiled only as part of a 64-bit version of a given C program. See EXAMPLES. This header incorporates definitions of other preprocessor symbols that can be useful when keeping code portable between different instruc- tion set architectures. _LITTLE_ENDIAN _BIG_ENDIAN The natural byte order of the processor. A pointer to an int points to the least/most significant byte of that int. _STACK_GROWS_UPWARD _STACK_GROWS_DOWNWARD The processor specific direction of stack growth. A push onto the stack increases/decreases the stack pointer, so it stores data at successively higher/lower addresses. _CHAR_IS_UNSIGNED _CHAR_IS_SIGNED The C Compiler implements objects of type char as unsigned or signed respectively. This is really an implementation choice of the com- piler, but it is specified in the ABI and tends to be uniform across compilers for an instruction set architecture. _CHAR_ALIGNMENT _SHORT_ALIGNMENT _INT_ALIGNMENT _LONG_ALIGNMENT _LONG_LONG_ALIGNMENT _DOUBLE_ALIGNMENT _LONG_DOUBLE_ALIGNMENT _POINTER_ALIGNMENT _FLOAT_ALIGNMENT The ABI defines alignment requirements of each of the primitive object types. Some, if not all, might be hardware requirements as well. The values are expressed in bytes. _MAX_ALIGNMENT The most stringent alignment requirement as specified by the ABI. Equal to the maximum of all the above _XXX_ALIGNMENT values. _LONG_LONG_ALIGNMENT_32 The 32-bit ABI supported by a 64-bit kernel may have different alignment requirements for primitive object types. The value of this identifier is expressed in bytes. USAGE
The daddr_t type is used for disk addresses except in an inode on disk. Times are encoded in seconds since 00:00:00 UTC, January 1, 1970. The major and minor parts of a device code specify kind and unit number of a device and are installation-dependent. Offsets are measured in bytes from the beginning of a file. The label_t[] types are used to save the processor state while another process is running. EXAMPLES
Example 1: Use of preprocessor symbol _LP64. In the following example, the preprocessor symbol _LP64 defines sections of code that will be compiled only as part of a 64-bit version of the given C program. #include <sys/types.h> ... #ifdef _LP64 printf("The data model is LP64 in this environment "); #else #ifdef _ILP32 printf("The data model is ILP32 in this environment "); #else #error "Unknown data model!" #endif #endif ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Stable | +-----------------------------+-----------------------------+ SEE ALSO
types32.h(3HEAD), attributes(5), standards(5) SunOS 5.10 6 Oct 2004 types.h(3HEAD)
All times are GMT -4. The time now is 10:34 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy