Funciones en C++
Funciones en C++
Me gustaría hacer alguna función en Borland C++, para probar. Mi pregunta es: ¿basta con escribir un fichero "----.c" y compilar con BRC32 para obtener un OBJ válido, o si tengo que hacer algo especial entre medias?
Gracias.
Gracias.
Nos Gusta Programar
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Manu,
Aqui tienes un ejemplo para Clipper. Ojo, tienes que compilar con bcc.exe que es para 16 bits. En 32 bits es más simple: http://fivetechsoft.com/forums/viewtopi ... testivalue
go.bat
main.prg
test.cpp
Aqui tienes un ejemplo para Clipper. Ojo, tienes que compilar con bcc.exe que es para 16 bits. En 32 bits es más simple: http://fivetechsoft.com/forums/viewtopi ... testivalue
go.bat
Code: Select all
c:\clipper5\bin\clipper main /n
c:\bc5\bin\bcc -c -ml -Ic:\clipper5\include test.cpp
SET LIB=c:\clipper5\lib;c:\bc5\lib
blinker fi main.obj, test.obj lib clipper, extend, dbfntx, terminal
Code: Select all
// Usando C++ con Clipper
// ejemplo desarrollado por FiveTech Software
function Main()
local oTest := Test() // Creamos un objeto en C++
? Test_IVal( oTest ) // Visualizamos un dato del objeto en C++
return nil
Code: Select all
class Sample
{
public:
int iValue;
Sample();
void * operator new( unsigned long ulSize );
void operator delete( void * );
};
Sample::Sample()
{
iValue = 123;
}
extern "C" {
void * _xgrab( unsigned long );
void _xfree( void * );
}
void * Sample::operator new( unsigned long ulSize )
{
return _xgrab( ulSize );
}
void Sample::operator delete( void * p )
{
_xfree( p );
}
extern "C" {
#include <extend.api>
CLIPPER TEST()
{
_retnl( ( unsigned long ) new Sample() );
}
CLIPPER TEST_IVAL()
{
_retnl( ( ( Sample * ) _parnl( 1 ) )->iValue );
}
}
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Bueno, aunque leyendo mejor lo que me has escrito, me han entrado algunas dudas. Mi intención es escribir algunas funciones sencillas en C++ para utilizarlas en diversos programas, a modo de librería.
Según veo en Source\WinApi\...c
¿Esto seviría?
#include <WinTen.h>
#include <Windows.h>
#include <ClipApi.h>
CLIPPER lEsPar( PARAMS )
{
_retl((_parnl( 1 )%2 == 0);
}
Guardar en Test.c
Después compilar con: bcc.exe -c -ml -IC:\CLIPPER5\INCLUDE Test.c
Finalmente linkar el objeto (Test.obj) junto con los demás objetos de mi programa. ¿Sería correcto?
En caso afirmativo, para 32 bit, para cuando me pase a xHarbour, sería lo mismo pero con BCC32?
Por ultimo, he visto en algunos ficheros de c algo como esto: _param( 3, -1 ). Otras veces, en vez de -1 aparece un entero positivo que deduzco es el indice de un array, pero -1 no he logrado averiguar que significa.
Gracias. Un saludo
Según veo en Source\WinApi\...c
¿Esto seviría?
#include <WinTen.h>
#include <Windows.h>
#include <ClipApi.h>
CLIPPER lEsPar( PARAMS )
{
_retl((_parnl( 1 )%2 == 0);
}
Guardar en Test.c
Después compilar con: bcc.exe -c -ml -IC:\CLIPPER5\INCLUDE Test.c
Finalmente linkar el objeto (Test.obj) junto con los demás objetos de mi programa. ¿Sería correcto?
En caso afirmativo, para 32 bit, para cuando me pase a xHarbour, sería lo mismo pero con BCC32?
Por ultimo, he visto en algunos ficheros de c algo como esto: _param( 3, -1 ). Otras veces, en vez de -1 aparece un entero positivo que deduzco es el indice de un array, pero -1 no he logrado averiguar que significa.
Gracias. Un saludo
Nos Gusta Programar
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Manu,
>
Después compilar con: bcc.exe -c -ml -IC:\CLIPPER5\INCLUDE Test.c
Finalmente linkar el objeto (Test.obj) junto con los demás objetos de mi programa. ¿Sería correcto?
>
Sí
>
En caso afirmativo, para 32 bit, para cuando me pase a xHarbour, sería lo mismo pero con BCC32?
>
Sí. En 32 bits no se usa -ml
>
Por ultimo, he visto en algunos ficheros de c algo como esto: _param( 3, -1 ). Otras veces, en vez de -1 aparece un entero positivo que deduzco es el indice de un array, pero -1 no he logrado averiguar que significa.
>
-1 es equivalente a 0xFFFF (hexadecimal) que significa "de todos los tipos" en Clipper. Es decir, queremos un parámetro, sea del tipo que sea. Variando ese valor se puede escoger un cierto tipo de valores.
entero positivo es un tipo de valor, no "de todos los tipos".
>
Después compilar con: bcc.exe -c -ml -IC:\CLIPPER5\INCLUDE Test.c
Finalmente linkar el objeto (Test.obj) junto con los demás objetos de mi programa. ¿Sería correcto?
>
Sí
>
En caso afirmativo, para 32 bit, para cuando me pase a xHarbour, sería lo mismo pero con BCC32?
>
Sí. En 32 bits no se usa -ml
>
Por ultimo, he visto en algunos ficheros de c algo como esto: _param( 3, -1 ). Otras veces, en vez de -1 aparece un entero positivo que deduzco es el indice de un array, pero -1 no he logrado averiguar que significa.
>
-1 es equivalente a 0xFFFF (hexadecimal) que significa "de todos los tipos" en Clipper. Es decir, queremos un parámetro, sea del tipo que sea. Variando ese valor se puede escoger un cierto tipo de valores.
entero positivo es un tipo de valor, no "de todos los tipos".
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Una últiuma cosa y ya no te molesto más con este tema. Estoy intentando compilar a 32 bits mi ejemplo tal que así:
// #include <winten.h>
#include <windows.h>
#include <clipapi.h>
CLIPPER lEsPar( PARAMS )
{
_retl( _parnl( 1 )%2 == 0 ) ;
}
Con el comando: c:\Borland\Bcc55\Bin\Bcc32.exe -c -Ic:\Borland\Bcc55\Include %1.c
Como me dijistes
Y me da los 3 siguientes errores:
Warning W8065 ClipFunc.c 7: Call to function '_parnl' with no prototype in function lEsPar
Warning W8065 ClipFunc.c 7: Call to function '_retl' with no prototype in function lEsPar
Warning W8057 ClipFunc.c 8: Parameter 'params' is never used in function lEsPar
¿Eso es normal o me falta algo?
Muchas gracias. Un saludo.
// #include <winten.h>
#include <windows.h>
#include <clipapi.h>
CLIPPER lEsPar( PARAMS )
{
_retl( _parnl( 1 )%2 == 0 ) ;
}
Con el comando: c:\Borland\Bcc55\Bin\Bcc32.exe -c -Ic:\Borland\Bcc55\Include %1.c
Como me dijistes
Y me da los 3 siguientes errores:
Warning W8065 ClipFunc.c 7: Call to function '_parnl' with no prototype in function lEsPar
Warning W8065 ClipFunc.c 7: Call to function '_retl' with no prototype in function lEsPar
Warning W8057 ClipFunc.c 8: Parameter 'params' is never used in function lEsPar
¿Eso es normal o me falta algo?
Muchas gracias. Un saludo.
Nos Gusta Programar