By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,445 Members | 1,329 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,445 IT Pros & Developers. It's quick & easy.

problem while detecting floating point operations

P: n/a
hi friends ...

i am facing a problem while detecting floating point operations in my
project, please help me.

i want to find out the places in my C/C++ project where i am doing
floating point operations.
As it is a big project it is not possible to check every line manually,
so is there any other method
to detect floating point operations in my project?
I just compiled the project with option '-msoft-float', it is reporting
errors at the places where 'float' variables are being used. But it is
not reporting any error for the places where we are using floating
literals ...
to make myself clear,i would give an example code snippet,

example:

//first case

float x;

printf("%f",x); // here it is reporting an error because we are
trying to use the variable (float) x;

//in second case

int y;

y = 4.5 * 2.5; // here it is not reporting any error .

what should have to be done to detect these kind of operations
also.

library: GCC 3.4.3
kernel: 2.6.9
Thanks in advance

Dec 19 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a
alex wrote:
.....
//in second case

int y;

y = 4.5 * 2.5; // here it is not reporting any error .

what should have to be done to detect these kind of operations
also.
This likely emits no floating point ops so it is expected that it won't
detect anything.

You could write a simple tokenizer that finds floating point literals.
Dec 19 '06 #2

P: n/a

alex napsal:
hi friends ...

i am facing a problem while detecting floating point operations in my
project, please help me.

i want to find out the places in my C/C++ project where i am doing
floating point operations.
As it is a big project it is not possible to check every line manually,
so is there any other method
to detect floating point operations in my project?
I just compiled the project with option '-msoft-float', it is reporting
errors at the places where 'float' variables are being used. But it is
not reporting any error for the places where we are using floating
literals ...
to make myself clear,i would give an example code snippet,

example:

//first case

float x;

printf("%f",x); // here it is reporting an error because we are
trying to use the variable (float) x;

//in second case

int y;

y = 4.5 * 2.5; // here it is not reporting any error .

what should have to be done to detect these kind of operations
also.

library: GCC 3.4.3
kernel: 2.6.9
Thanks in advance
Hi.

You can try to

#define float MyFType
#define double MyDType
#define long double MyLDType

Then rebuild. As long as you won't define arithnmetic operations for
My*Type, compiler should complain. Maybe you will need to define
constructors and operators for typecasting to float/double/long double.

BR
Ondra

Dec 19 '06 #3

P: n/a
alex a écrit :
hi friends ...

i am facing a problem while detecting floating point operations in my
project, please help me.

i want to find out the places in my C/C++ project where i am doing
floating point operations.
As it is a big project it is not possible to check every line manually,
so is there any other method
to detect floating point operations in my project?
I just compiled the project with option '-msoft-float', it is reporting
errors at the places where 'float' variables are being used. But it is
not reporting any error for the places where we are using floating
literals ...
to make myself clear,i would give an example code snippet,

example:

//first case

float x;

printf("%f",x); // here it is reporting an error because we are
trying to use the variable (float) x;

//in second case

int y;

y = 4.5 * 2.5; // here it is not reporting any error .

what should have to be done to detect these kind of operations
also.

library: GCC 3.4.3
kernel: 2.6.9
Thanks in advance
Well, your compiler is smart enough to know that
y = 4.5 * 2.5;
is evaluated and casted into int at compiled time and so doesn't report
an error because no floating point operation is performed at exec time.

Now, if you want to detect everyline where a floating point operation is
executed at compile time, this is tricky; you would have to locate lines
containg float constant and defines representing a float.

Perhaps it is worth doing a 'gcc -E' to get the file after preprocessing
stage and track back float point values.

Michael
Dec 19 '06 #4

P: n/a
thank you friends I solved the problem using some third part lexer
thank you very much

Dec 22 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.