I am surprised by GCC (this is ver. 4.2.4, Ubuntu 32 bit Intel) when a function declares a float parameter and it's prototype is missing, the parameters are messed up.
Please see my code below:
Code:
~/test$ cat x1.c
#include <stdio.h>
#include <stdlib.h>
set_p(int p1, float p2, int p3, int p4)
{
printf("p1=%i\n", p1);
printf("p2=%.4f\n", p2);
printf("p3=%i\n", p3);
printf("p4=%i\n", p4);
return(0);
}
main(int argc, char *argv[])
{
float x1 = (argc == 2) ? atof(argv[1]) : 1.2345;
set_p(1, x1, 2, 3);
set_P(1, x1, 2, 3);
return(0);
}
~/test$ cat x2.c
#include <stdio.h>
set_P(int p1, float p2, int p3, int p4)
{
printf("p1=%i\n", p1);
printf("p2=%.4f\n", p2);
printf("p3=%i\n", p3);
printf("p4=%i\n", p4);
return(0);
}
I make it like this:
cc -c x1.c
cc -c x2.c
cc x1.o x2.o
As you see, the set_P function somehow messed up parameters.
***Note: the code does work on SCO with stock compiler on similar h/w.
If I add the function prototype to x1.c
Code:
int set_P(int , float , int , int );
then everything works correctly, no surprises.
My understanding is that compiler allocates longs for longs/integers/shorts and doubles for float/double when passing parametrs by value. Then if receiver function expects a float, it will get first 32 bit, which is OK on Intel. Apparently my understanding is not correct.
The code in many places lacks function prototypes, I wander if I can somehow influence compiler to pass float/double parameters and not mess up. Any ideas?
I need to pass a parameter to a function in a script. My parameter is a string. When I display the parameter within my function, I only get the first word from string I pass in.
How can I make the function receive the whole string (and not terminate at the first space it encounters)?.
part of... (2 Replies)
Hi,
How to pass parameter to makefile?
Please let me know if any one knows and also please put an example of makefile with this feature.
thanks,
Manju. (3 Replies)
Hi all
I have a script which will take input as filename and passes it to a java program. It is as follows
--------------------------------
FILENAME=$1
echo $FILENAME
${JAVA_HOME}/bin/java -cp DateProvider $FILENAME
-------------------------------------------------
when I execute the same... (2 Replies)
I have written a Shell Script Program which accepts 3 parameters as shown below:
./calc 20 + 2
in the above line ./calc is the Shell Script itself with 3 parameters, namely:
20
+
and 2.
Well, now let's look inside the Script:
result=$1$2$3
echo $result
The output will be as... (8 Replies)
Hi All,
I developed a KSH script which will accept two parameters as input. These two parameters are some directories paths.
In the script i am validating the number of paramaters it received as below
#--------------------------------------
# Check Command line arguments... (8 Replies)
Hi All,
When passing parameters to a sheel script, the parameters are referenced by their positions such as $1 for first parameter, $2 for second parameter. these positional values can only have values ranging from $0-$9 (0,1,2,3...9).
I have a shell script meant to accept 20 parameters. for... (3 Replies)
i am passing input parameter 'one_two' to the script , the script output should display the result as below
one_1two
one_2two
one_3two
if
then
echo " Usage : <$0> <DATABASE> "
exit 0
else
for DB in 1 2 3
do
DBname=`$DATABASE | awk -F "_" '{print $1_${DB}_$2}`
done
fi (5 Replies)
Hi,
I've written a script where eleven parameter to be passed from command line
which is inserting into an oracle table,
it is working but the tenth and 11th parameter are not accepting as given
it is referring to 1st parameter.
HERE IS THE SCRIPT
#!/bin/ksh
#set -o
echo $*... (4 Replies)
Hi ,
I am passing date parameter through file
my shell script testing.sh is
#set -x
#set -v
asd=$1
asd1=$2
echo $asd
echo $asd1
Passing parameter as below
sh testing.sh `cat file1.txt`
Output (2 Replies)
Discussion started by: kaushik02018
2 Replies
LEARN ABOUT PHP
cairo_matrix_init
CAIRO_MATRIX_INIT(3) 1 CAIRO_MATRIX_INIT(3)CairoMatrix::__construct - Creates a new CairoMatrix object
Object oriented style (method):
SYNOPSIS
public CairoMatrix::__construct ([float $xx = 1.0], [float $yx = 0.0], [float $xy = 0.0], [float $yy = 1.0], [float $x0 = 0.0], [float
$y0 = 0.0])
DESCRIPTION
Procedural style:
object cairo_matrix_init ([float $xx = 1.0], [float $yx = 0.0], [float $xy = 0.0], [float $yy = 1.0], [float $x0 = 0.0], [float $y0 =
0.0])
Returns new CairoMatrix object. Matrices are used throughout cairo to convert between different coordinate spaces. Sets matrix to be the
affine transformation given by xx, yx, xy, yy, x0, y0. The transformation is given by: x_new = xx * x + xy * y + x0; and y_new = yx * x +
yy * y + y0;
PARAMETERS
o $xx
- xx component of the affine transformation
o $yx
- yx component of the affine transformation
o $xy
- xy component of the affine transformation
o $yy
- yy component of the affine transformation
o $x0
- X translation component of the affine transformation
o $y0
- Y translation component of the affine transformation
RETURN VALUES
Returns a new CairoMatrix object that can be used with surfaces, contexts, and patterns.
EXAMPLES
Example #1
Object oriented style
<?php
/* Create a new Matrix */
$matrix = new CairoMatrix(1.0, 0.5, 0.0, 1.0, 0.0, 0.0);
?>
Example #2
Procedural style
<?php
/* Create a new Matrix */
$matrix = cairo_matrix_init(1.0, 0.5, 0.0, 1.0, 0.0, 0.0);
?>
SEE ALSO
CairoMatrix::initIdentity, CairoMatrix::initRotate, CairoMatrix::initScale, CairoMatrix::initTranslate.
PHP Documentation Group CAIRO_MATRIX_INIT(3)