首页| 论坛| 消息

标题:C++ 2个结构体重名,编译器有办法发现吗?
作者:wangjianxyz
日期:2023-05-18 13:52
内容:

我有2个cpp文件,2个里面各自有一个结构体,成员不一样,但是名字恰好一样。
我使用的时候,就会出问题,2个结构体混淆了,可能会导致程序崩溃。
用g++编译的时候,g++并没有报错。
有没有方法,能主动发现类似的错误?

下面的源码,运行时会直接崩溃。
而且,看打印,test_fun.cpp里面的变量,析构时,会调用main.cpp里面的析构函数。

main.cpp
#include
#include
#include
#include
#defineht_log_info(xx,args...)fprintf(stderr, xx"\n", ##args)
int test_key_fun1();
int test_key_fun2();
int test_key_fun3();
int a;
typedef struct key_info_s{
std::string key;
std::string value;
~key_info_s(){
ht_log_info("main::key_info_s: delete ,size=%d", sizeof( struct key_info_s));
}
}KEY_INFO_T;
class KEY_ITEM_T{
std::string key;
std::string value;
int a;
int b;
int c;
};

int main()
{

// test_key_fun2();
test_key_fun3();
test_key_fun1();
KEY_INFO_T aaaa;
while(1)
{
usleep(1e6);
int a = 34;
int b= 34;
&nbsp ..


#1 [kaon 05-18 20:32]
好像没办法处理UB
#2 回 kaon 的帖子 [fsu0413 05-20 10:03]
kaon:好像没办法处理UB (2023-05-18 20:32) 
自信点,把好像去掉

回复 发表
主题 版块