Typedef does not work to name a type


 
Thread Tools Search this Thread
Top Forums Programming Typedef does not work to name a type
# 8  
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  
Old 01-15-2015
Thank you all! This is way more than expected.
# 10  
Old 02-17-2015
Did some reading, it seems to me the problem is this part of the header:
Code:
#ifndef GNURANDOM
#ifdef __GNUG__
#pragma interface
#else
typedef int _G_int32_t ;   //This is the problem line
#endif
#define GNURANDOM

#include <math.h>
#ifdef __linux
#include <_G_config.h>
#else
#include "random/GnuTypes.h"
#include "random/GnuRandom.h"
#endif
#include "system/Assert.h"

which probably is NOT standard unsigned integer type.
The #ifdef/ifndef and #pragma make me confused with my OS Linux HP32 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux I conceptually understand #ifdef/#ifndef, and #pragma, but not sure under my present OS whether they are defined or not. How should I fix this? Thanks a lot!

Last edited by yifangt; 02-17-2015 at 06:30 PM..
# 11  
Old 02-17-2015
Try adding the following line after the _G_int32_t typedef:
Code:
typedef unsigned int _G_uint32_t;

This User Gave Thanks to fpmurphy For This Post:
# 12  
Old 02-19-2015
Thank you everybody!
After reading this post, finally I got a workaround by replacing the problematic line with this one:
Code:
typedef int int32_t ;

The problem may be related to the non-standard definitions of _G_int32_t and _G_uint32_t in the source code.
It worked after I made the replacements, anyway.

Last edited by yifangt; 02-19-2015 at 03:37 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

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. 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

7. 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

8. 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

9. 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
Login or Register to Ask a Question