小编moe*_*ake的帖子

在单独的日志文件中写入

我试图在应用程序的单独日志文件中编写不同类型的条目.由于我试图找出的原因,所有条目都出现在所有日志文件中.我能做错什么?

我想只有关键条目进入/tmp/log/critical.log并调试条目进入/tmp/log/debug.log文件,而所有的进入者都可以进入/tmp/log/all.log日志文件.

以下是/etc/rsyslog.conf文件中的条目

local0.*                                                /tmp/log/all.log
local0.alert                                            /tmp/log/alert.log
local0.crit                                             /tmp/log/critical.log
local0.debug                                            /tmp/log/debug.log
local0.emerg                                            /tmp/log/emergency.log
local0.err                                              /tmp/log/error.log
local0.info                                             /tmp/log/info.log
local0.notice                                           /tmp/log/notice.log
local0.warning                                          /tmp/log/warning.log
Run Code Online (Sandbox Code Playgroud)

我的示例c程序编写syslog条目...

#include<syslog.h>

main()
{
    openlog("myapp",LOG_CONS|LOG_PID|LOG_NDELAY,LOG_LOCAL0);

    syslog(LOG_EMERG|LOG_LOCAL0,"Emergency",getuid());
    syslog(LOG_ALERT|LOG_LOCAL0,"Alert",getuid());
    syslog(LOG_CRIT|LOG_LOCAL0,"Critical",getuid());
    syslog(LOG_ERR|LOG_LOCAL0,"Error",getuid());
    syslog(LOG_WARNING|LOG_LOCAL0,"Warning",getuid());
    syslog(LOG_NOTICE|LOG_LOCAL0,"Notice",getuid());
    syslog(LOG_INFO|LOG_LOCAL0,"Information",getuid());
    syslog(LOG_DEBUG|LOG_LOCAL0,"Debug",getuid());

    closelog();
}
Run Code Online (Sandbox Code Playgroud)

c syslog

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

动态打包OpenGL顶点缓冲区对象的数据

我试图在OOP中为VBO编写一个包装器,它包含addVertex,addNormal .. addX,flush()和render()函数.首先,我在不同的向量中保存顶点,法线,索引,如:

std::vector<glm::vec4> vertexBuffer;
std::vector<glm::vec4> colorBuffer;
std::vector<glm::vec3> normalBuffer;
std::vector<glm::vec2> texCoordBuffer;
std::vector<unsigned int> indexBuffer;
Run Code Online (Sandbox Code Playgroud)

但是当我在某处读到时,为每个人保存不同的VBO ID是完全没有效率的,因此最好按照VertexNormalTexCoordColor - VNTC - VNTC ...的顺序打包它们,并将它们表示在一个VBO ID中.因此,上传到GPU时可以有效地使用缓冲区.所以这次我仍然将它们保存在向量中但是当我调用flush()时我想用结构包装它们,然后将该结构向量上传到GPU:

struct VBOData {
    glm::vec4 vert;
    glm::vec3 normal;
    glm::vec4 color;
    glm::vec2 texcoord;
};
std::vector<VBOData> vboBuffer;
Run Code Online (Sandbox Code Playgroud)

然后我上传flush()中的所有内容:

vboBuffer.reserve(vertexBuffer.size());

for (int i = 0; i < vertexBuffer.size(); ++i) {
    VBOData data;
    data.vert = vertexBuffer[i];
    data.color = colorBuffer[i];
    data.normal = normalBuffer[i];
    data.texcoord = texCoordBuffer[i];
    vboBuffer.push_back(data);
}

glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, vboBuffer.size() * sizeof(VBOData), (GLchar*) &vboBuffer[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
Run Code Online (Sandbox Code Playgroud)

现在有这个问题,如果我的对象不包含颜色,法线或tex坐标并且只包含顶点怎么办?或者只关于顶点和法线?或者总是有顶点的不同数据组合?为了提高效率,我能否以V(N)(T)(C)顺序动态打包它们?

c++ opengl vbo

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

linux内核中的container_of()宏中的(char*)转换

#define container_of(ptr, type, member) ({                      \
    const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
    (type *)( (char *)__mptr - offsetof(type,member) );})
Run Code Online (Sandbox Code Playgroud)

我已经知道第一行是用于类型检查,但对于第二行,
为什么要进行(char *)转换?我找不到解释这个.
我自己做了一些实验代码,即使没有演员,结果似乎也很好.

c linux kernel

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

检查所有数组成员是否具有相同的值

是否有STL算法或快速技术来测试数组的所有成员是否设置为相同的值?

例如,我有一个默认值的数组:

bool *finishFlags  =new (std::nothrow) bool[numOfBools];

    //Init all to false:

for(int i = 0 ; i < numOfBools; ++i){
   *finishFlags++ = false;
}
Run Code Online (Sandbox Code Playgroud)

现在,在运行时期间,一些数组成员被设置为true,我想测试它们是否都设置为相同的值(在这种情况下为true).是否有一种快速的方法可以在没有典型的数组迭代的情况下完成它?

c++ algorithm

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

没有警告该函数int f()不返回任何值?

struct A
{
    int f()
    {} // Notice here! 
};

int main()
{
    A a;
    a = a;
}
Run Code Online (Sandbox Code Playgroud)

我的编译器是最新的VC++编译器(Visual Studio 2013 Preview)

函数A :: f不返回任何值; 但没有编译器警告或错误!为什么?

c++ compiler-construction visual-c++ c++11

3
推荐指数
2
解决办法
421
查看次数

标签 统计

c++ ×3

c ×2

algorithm ×1

c++11 ×1

compiler-construction ×1

kernel ×1

linux ×1

opengl ×1

syslog ×1

vbo ×1

visual-c++ ×1