Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

402
Visualizações
Cómo crear un registrador multihilo en C++

Quiero crear un registrador de subprocesos múltiples en c++ que también se pueda llamar desde el código c .

Esto está en mi archivo source.cpp :

 #include <cstdlib> #include <iostream> #include <thread> #include "source.h" using namespace std; #ifdef __cplusplus extern "C" { #endif class thread_obj { public: void operator()(float* x) { printf("value: %d", x); } }; void log(float value) { thread th1(thread_obj(), value); th1.join(); } #ifdef __cplusplus } #endif

Y esto está en source.h :

 #ifdef __cplusplus extern "C" { #endif void log(float value); #ifdef __cplusplus } #endif

Y ahora quiero usar esto desde un archivo C como: log(myFloatValue); , por supuesto con el archivo de encabezado incluido.

Pero tengo algunos errores extraños, como:

 Error C2672 'invoke': no matching overloaded function found myproj C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\thread 43 Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Ty1 &&,_Types2 &&...) noexcept(<expr>)' myproj C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\thread 39 Error C2780 'unknown-type std::invoke(_Callable &&) noexcept(<expr>)': expects 1 arguments - 2 provided hackatlon_0_0_1 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\thread 39

Mi pregunta es, ¿cómo puedo hacer esto o cómo puedo solucionar estos errores?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Hay varios problemas con su código:

  1. el argumento para operator() debe ser float x NOT float* ya que esto es lo que está pasando al subproceso
  2. su función de registro entra en conflicto con el registro matemático estándar. Cambie el nombre de la función o colóquelo en un espacio de nombres diferente
  3. printf usando el especificador de formato "%d" . Debería ser "%f" ya que la entrada es flotante
  4. No necesita poner extern "C" para las clases. Está evitando la manipulación de nombres solo para la función de log que debe llamarse desde el archivo c.
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda