标签: compile-time

运行时与编译时间

任何人都可以让我很好地理解运行时和编译时的区别是什么?

runtime compile-time

340
推荐指数
15
解决办法
28万
查看次数

程序可以在编译期间依赖于库而不是运行时吗?

我理解运行时和编译时之间的区别以及如何区分这两者,但我没有看到需要区分编译时和运行时依赖.

我正在窒息的是:程序如何在编译期间不依赖运行时依赖的东西?如果我的Java应用程序使用log4j,那么它需要log4j.jar文件才能编译(我的代码集成并调用log4j内部的成员方法)以及运行时(我的代码完全无法控制log4j中的代码后发生的事情) .jar跑了).

我正在阅读依赖解析工具,如Ivy和Maven,这些工具清楚地区分了这两种类型的依赖关系.我只是不明白它的必要性.

任何人都可以给出一个简单的,"国王的英语"式的解释,最好有一个实际的例子,即使像我这样的可怜的人也能理解?

java build-process runtime compile-time

106
推荐指数
5
解决办法
5万
查看次数

C中的静态断言

在C(而不是C++)中实现编译时静态断言的最佳方法是什么,特别强调GCC?

c gcc assert static-assert compile-time

79
推荐指数
4
解决办法
6万
查看次数

编译时间与运行时间依赖关系 - Java

Java中的编译时间和运行时依赖性有什么区别?它与类路径有关,但它们有何不同?

java runtime classpath compile-time

79
推荐指数
5
解决办法
4万
查看次数

检测CPU架构编译时

在编译C或C++代码时,找出CPU架构最可靠的方法是什么?据我所知,不同的编译器有自己的一套非标准预处理器定义(_M_X86在MSVS中__i386__,__arm__在GCC 中等).

有没有一种标准的方法来检测我正在构建的架构?如果没有,是否有各种编译器的这种定义的综合列表的来源,例如包含所有样板#ifdef的标题?

c c++ cpu-architecture detection compile-time

76
推荐指数
6
解决办法
6万
查看次数

C++获取模板中的类型名称

我正在编写一些用于解析一些文本数据文件的模板类,因此很可能绝大多数的解析错误都是由于数据文件中的错误造成的,这些错误大部分都不是由程序员编写的,因此需要关于为什么应用程序无法加载的好消息,例如:

解析example.txt时出错.[MySectiom] Key的值("notaninteger")不是有效的int

我可以计算出从传递给在类模板函数和成员瓦尔参数文件,段和键名,但我不知道如何让模板函数试图转换为类型的名称.

我当前的代码看起来像,只有普通字符串的特殊化,如下:

template<typename T> T GetValue(const std::wstring &section, const std::wstring &key)
{
    std::map<std::wstring, std::wstring>::iterator it = map[section].find(key);
    if(it == map[section].end())
        throw ItemDoesNotExist(file, section, key)
    else
    {
        try{return boost::lexical_cast<T>(it->second);}
        //needs to get the name from T somehow
        catch(...)throw ParseError(file, section, key, it->second, TypeName(T));
    }
}
Run Code Online (Sandbox Code Playgroud)

Id而不是必须为数据文件可能使用的每种类型进行特定的重载,因为它们有很多...

此外,我需要一个不会产生任何运行时开销的解决方案,除非发生异常,即完全编译时解决方案是我想要的,因为这个代码被称为吨次并且加载时间已经变得有点长.

编辑:好的,这是我提出的解决方案:

我有一个类型h包含以下内容

#pragma once
template<typename T> const wchar_t *GetTypeName();

#define DEFINE_TYPE_NAME(type, name) \
    template<>const wchar_t *GetTypeName<type>(){return name;}
Run Code Online (Sandbox Code Playgroud)

然后我可以在我需要处理的每种类型的cpp文件中使用DEFINE_TYPE_NAME宏(例如,在定义要开始的类型的cpp文件中).

然后链接器能够找到适当的模板特化,只要它在某处定义,否则抛出链接器错误,以便我可以添加类型.

c++ templates compile-time typename

69
推荐指数
7
解决办法
11万
查看次数

如何正确地将编译时信息传递给Template Haskell函数?

我需要将编译脚本中的一些信息传递给Template Haskell.目前编译脚本将信息保存在系统环境中,所以我只是使用System.Environment.getEnvironmentwrap in来读取它runIO.有没有更好的方法,例如传递一些参数ghc(类似于-D...C预处理器),或者也许是为TH专门为此目的而设计的东西?

haskell compile-time template-haskell

69
推荐指数
2
解决办法
1942
查看次数

在里面循环; 构建可能会产生不可靠的结果:Xcode 10错误

我正在尝试使用Xcode 10进行编译时转移到新的构建系统.但是,它会出现以下错误:

Cycle details:
? Target 'project' : LinkStoryboards

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'

Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex

Target 'project' has process command with input '/Users/project/Resources/Info.plist'

Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Run Code Online (Sandbox Code Playgroud)

即使在删除问题文件后,我也可以使用另一个xib/storyboard.如何在不恢复遗留构建系统的情况下解决此错误?

build-system compile-time xcode10

59
推荐指数
15
解决办法
3万
查看次数

什么时候constexpr函数在编译时得到评估?

由于在运行时可能会调用声明为constexpr的函数,编译器在哪个条件下决定是在编译时还是在运行时计算它?

template<typename base_t, typename expo_t>
constexpr base_t POW(base_t base, expo_t expo)
{
    return (expo != 0 )? base * POW(base, expo -1) : 1;
}

int main(int argc, char** argv)
{
    int i = 0;
    std::cin >> i;

    std::cout << POW(i, 2) << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我在编译时是未知的,这可能是编译器将POW()视为在运行时调用的常规函数​​的原因.然而,这种动态虽然看起来很方便,但却具有一些不切实际的含义.例如,是否有一种情况我希望编译器在编译时计算constexpr函数,编译器决定将其视为普通函数,而它在编译时也会工作?有任何已知的常见陷阱吗?

c++ runtime compile-time constexpr c++11

58
推荐指数
2
解决办法
1万
查看次数

C++中的sizeof是在编译时还是运行时评估的?

例如,此代码段的结果取决于哪台机器:编译器机器或机器可执行文件有效?

sizeof(short int)
Run Code Online (Sandbox Code Playgroud)

c++ runtime sizeof compile-time

54
推荐指数
4
解决办法
2万
查看次数