冥界3大法王 发表于 2023-4-17 21:36

QT Creator会不会自行优化? 把各自重复的引用库的行优化下?



譬如下面的:
#include <QRegularExpression>
。。。。
比如别的ui里边又加了。。。
有许多个。。。
那编译器编译时,会不会自己把它们合并起来?另外分着多个重复的是不是显得太臃肿了?

拎壺沖 发表于 2023-4-17 22:06

法王现在不搞游戏了?

FDE9 发表于 2023-4-17 22:08

本帖最后由 FDE9 于 2023-4-17 22:10 编辑

QT Creator应该不管这些, 这是编译器负责的, 典型的是在预处理步骤处理#include

#ifndef或者#pragma once之类的guard和预编译头之类的技术可能是你所期望的

另外, 别把编译器想太蠢了...这么多年了, 如果一个已知的"优化"没有做, 那八成是不能做

dong555 发表于 2023-4-17 23:14

楼主不玩delphi   也开始玩QT了吗

fengdaokanhai 发表于 2023-4-18 00:02

最好头文件还是加上ifndef endif或者#pragma once,而且多文件,你不加上你写的时候也会报错,要你引入

codeaftercode 发表于 2023-4-18 08:05

如果你用MSVC,头文件一定有#pragma once。如果你用MinGW,就不用加#pragma once
编译器没那么蠢,你想想,如果编译器把头文件重复导入了多次,那就相当于把一个类或一个函数重复定义了多次,会报错呀

codeaftercode 发表于 2023-4-18 08:10

你可以自己测试一下,在A文件里include好多个头文件,到B文件里include A,构建,记录生成文件的大小。再把A文件中include的那些个头文件,全部复制到B文件里,构建。对比最终生成的文件大小

only998 发表于 2023-4-18 08:30

如果你是动态引用的dll或者.so,其实无所谓,就是一个函数地址而已。如果是静态编译,你担心的这个问题是有可能发生的,不过也无所谓啦,就是程序大点而已:lol

淡淡灰黑色J 发表于 2023-4-18 09:25

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#endif // MAINWINDOW_H

头文件里面一般都加有这些预处理,目的是为了避免重复包含和编译

Dlan 发表于 2023-4-18 09:58

当然会啊!这个也简单,你测试一下就知道了,
页: [1]
查看完整版本: QT Creator会不会自行优化? 把各自重复的引用库的行优化下?