小编Yuu*_*uta的帖子

编译没有文件的C ++代码

我正在尝试使用您的标准g ++编译器来编译一些C ++代码。但是,不是从文件编译:

main.cpp:

#include <iostream>

int main(){
    std::cout << "Hello World!\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我喜欢做类似的事情

g++ ... "#include <iostream>\n int main(){ std::cout << \"Hello World!\n\"; return 0;}"
Run Code Online (Sandbox Code Playgroud)

stackoverflow的上一篇文章显示

echo "int main(){}" | gcc -Wall -o testbinary -xc++ -
Run Code Online (Sandbox Code Playgroud)

可以,但是我想知道它是如何工作的,并且更好,如果有一种方法不需要管道内容。

编辑:

我正在执行运行时代码生成,我需要生成一个共享库并加载创建的函数。

我以为会有一个标志告诉编译器“嘿,我给你源代码而不是文件”。

再次感谢您的帮助!

c++ compilation g++

4
推荐指数
1
解决办法
581
查看次数

将`std :: sort`与模板化类中的成员函数一起使用

我遇到的问题是我想在模板化的类中使用STL的自定义比较函数.

使用typedef的想法来自另一个Stackoverflow Post

无论如何,这是代码:

template <typename R,typename S>
class mesh{
  /* some stuff */

  void sortData(){
    typedef bool (*comparer_t)(const S,const S);
    comparer_t cmp = &mesh::compareEdgesFromIndex;
    sort(indx,indx+sides*eSize,cmp);
  }

  /* more stuff */

  // eData and cIndx are member variables
  bool compareEdgesFromIndex(const S a,const S b){
    return compareEdges(eData[cIndx[2*a]],eData[cIndx[2*a+1]],eData[cIndx[2*b]],eData[cIndx[2*b+1]]); 
  }
};
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

mesh.h:130:29: error: cannot convert ‘bool (mesh<float, unsigned int>::*)(unsigned int, unsigned int)’ to ‘comparer_t {aka\
bool (*)(unsigned int, unsigned int)}’ in initialization
Run Code Online (Sandbox Code Playgroud)

先感谢您!

c++ templates typedef function-pointers class

1
推荐指数
1
解决办法
1025
查看次数

glXGetCurrentDisplay()分段错误(Linux)

我正在使用OpenCL/OpenGL互操作,并且能够成功地在OSX上工作:

props[0] = CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE;
props[1] = (cl_context_properties) CGLGetShareGroup( CGLGetCurrentContext() );
Run Code Online (Sandbox Code Playgroud)

但是,使用X通讯员时:

props[0] = CL_GL_CONTEXT_KHR;
props[1] = (cl_context_properties) glXGetCurrentContext();
props[2] = CL_GLX_DISPLAY_KHR;
props[3] = (cl_context_properties) glXGetCurrentDisplay();
props[4] = CL_CONTEXT_PLATFORM;
props[5] = (cl_context_properties) pID;
Run Code Online (Sandbox Code Playgroud)

OpenGL初始化代码:

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

screenWidth  = glutGet(GLUT_SCREEN_WIDTH);
screenHeight = glutGet(GLUT_SCREEN_HEIGHT);

glutInitWindowPosition( (screenWidth - width)/2 , (screenHeight - height)/2 );
glutInitWindowSize(width, height);
glutCreateWindow(appName.c_str());

glClearColor (0.0, 0.0, 0.0, 0.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

glEnable(GL_COLOR_MATERIAL);

glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

glEnable (GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glutDisplayFunc(render_s);
glutIdleFunc(render_s);
glutReshapeFunc(resize_s);
glutKeyboardFunc(keyPress_s);
glutKeyboardUpFunc(keyRelease_s);
glutMouseFunc(mousePress_s); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl interop opencl segmentation-fault

1
推荐指数
1
解决办法
618
查看次数