小编Jos*_*oñi的帖子

将C结构转换为具有较少元素的另一个结构是否安全?

我正在尝试在C上做OOP(只是为了好玩)而且我想出了一个方法来进行数据抽象,方法是使用公共部分和更大的结构,首先是公共部分,然后是私有部分.这样我在构造函数中创建整个结构并将其返回到小结构.这是正确的还是会失败?

这是一个例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// PUBLIC PART (header)
typedef struct string_public {
    void (*print)( struct string_public * );
} *string;

string string_class_constructor( const char *s );
void string_class_destructor( string s );

struct {
    string (*new)( const char * );
    void (*delete)( string );
} string_class = { string_class_constructor, string_class_destructor };


// TEST PROGRAM ----------------------------------------------------------------
int main() {
    string s = string_class.new( "Hello" );
    s->print( s );
    string_class.delete( s ); s = NULL;
    return 0;
}
//------------------------------------------------------------------------------ …
Run Code Online (Sandbox Code Playgroud)

c struct type-punning

7
推荐指数
2
解决办法
1739
查看次数

使用lvh.me代替localhost进行测试是否安全?

我想知道是否安全使用lvh.me而不是localhost在本地开发时使用,因为lvh.me必须解决并且IP可能随时间变化。

lvh.me由于localhost没有顶级域,因此使用的目的是能够处理子域。

subdomain dns localhost

6
推荐指数
3
解决办法
4005
查看次数

set :: find()找不到

我有这个代码的问题(cubeBoxData是一组cubeBox):

cubeBox temp(bx,by,bz);
cubeBoxData.insert(temp);
set<cubeBox>::iterator i = cubeBoxData.find(temp);
const_cast<cubeBox&>(*i).addCube(x,y,z);
Run Code Online (Sandbox Code Playgroud)

问题是cubeBoxData.find(temp); 没有找到临时,那么程序尝试调用addCube()失败,我不知道为什么,因为这段代码工作正常(只需更改第三行):

cubeBox temp(bx,by,bz);
cubeBoxData.insert(temp);
set<cubeBox>::iterator i = find(cubeBoxData.begin(),cubeBoxData.end(),temp);
const_cast<cubeBox&>(*i).addCube(x,y,z);
Run Code Online (Sandbox Code Playgroud)

运算符<for cubeBox是:

bool operator<(const cubeBox& c) const {
    return x<c.x ? true : y<c.y ? true : z<c.z ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

并且addCube不会更改x,y或z.

我认为我的操作员<错了,我错过了一些愚蠢的东西,但我不知道它是什么.

c++

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

在 Windows 中的 MinGW 中使用地址清理程序无法找到 -lasan (MinGW)

我试图通过添加CONFIG += sanitizer sanitize_address到我的.pro文件中来使用 Qt 中的 gcc 地址清理程序,但我得到了一个error: cannot find -lasan.

我应该如何安装该库?

我正在使用 Qt 提供的 MinGW,但我也可以尝试独立版本。


相关问题:MinGW-w64的gcc和Address Sanitizer

qt gcc mingw qt-creator address-sanitizer

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

标签 统计

address-sanitizer ×1

c ×1

c++ ×1

dns ×1

gcc ×1

localhost ×1

mingw ×1

qt ×1

qt-creator ×1

struct ×1

subdomain ×1

type-punning ×1