标签: inline

内联函数有地址吗?

在"The C++ Programming Language"一书的第7.1.1节中,作者指出:

"内联函数仍然有一个唯一的地址,内联函数的静态变量也是如此"

我很迷惑.如果我有一个内联函数,那么它就没有地址.这也发生在C吗?

c++ inline

17
推荐指数
3
解决办法
2482
查看次数

Perl:如何将所有内联C代码放入单独的文件中?

这个问题很简单,我可以感受到RTFM的到来.但是,我整个上午都在看文档(Inline,Inline-C,Inline-C-Cookbook),我无法弄清楚如何解决这个问题.

我想使用内联C,但我不想在与perl代码相同的文件中使用C代码.

(Emacs不喜欢在一个文件中使用两种语言.原则上这是方便的,但实际上我必须在一个文件中编辑我的C然后将其复制粘贴到我的perl脚本中.)

这是工作perl:

#!/usr/bin/perl

use Inline C => DATA;
use strict;
use warnings;
use List::Util qw(sum);
use feature qw(say);

my @array = (1..10);
say "native perl: ", sum(@array), ", Inline C: ", sum1(\@array);

__END__
__C__

double sum1(AV* array) {
  int i;
  double sum = 0.0;
  for (i=0; i<=av_len(array); i++) {
    SV** elem = av_fetch(array, i, 0);
    if (elem != NULL)
      sum += SvNV(*elem);
  }
  return sum;
}
Run Code Online (Sandbox Code Playgroud)

(感谢mobrule让我这么远.)

我想将所有C代码(或尽可能多的)移动到单独的头文件中.

我可以做的是放入sum1 …

c perl inline

17
推荐指数
1
解决办法
1176
查看次数

Cython内联函数,以numpy数组作为参数

考虑这样的代码:

import numpy as np
cimport numpy as np

cdef inline inc(np.ndarray[np.int32_t] arr, int i):
    arr[i]+= 1

def test1(np.ndarray[np.int32_t] arr):
    cdef int i
    for i in xrange(len(arr)):
        inc(arr, i)

def test2(np.ndarray[np.int32_t] arr):
    cdef int i
    for i in xrange(len(arr)):
        arr[i] += 1
Run Code Online (Sandbox Code Playgroud)

我使用ipython来测量test1和test2的速度:

In [7]: timeit ttt.test1(arr)
100 loops, best of 3: 6.13 ms per loop

In [8]: timeit ttt.test2(arr)
100000 loops, best of 3: 9.79 us per loop
Run Code Online (Sandbox Code Playgroud)

有没有办法优化test1?为什么不把cython内联这个函数告诉?

更新:其实我需要的是这样的多维代码:

# cython: infer_types=True
# cython: boundscheck=False
# cython: wraparound=False …
Run Code Online (Sandbox Code Playgroud)

python performance numpy inline cython

17
推荐指数
3
解决办法
8710
查看次数

是否有在HTML中嵌入JSON的标准?

我想在HTML中嵌入JSON.我发现的最优雅的解决方案是使用script-tag和mime媒体类型application/json.

<script id="data" type="application/json">
    {
        "foo" : "bar"
    }
</script> 
Run Code Online (Sandbox Code Playgroud)

这是嵌入JSON的标准方法吗?如果没有,上述解决方案是否有任何风险?

使用内联JSON(而不是JSON-P服务)的原因:

  • 少量的JSON数据
  • 减少HTTP请求
  • 对HTML属性中的数据进行inline-JSON的首选项

[更新]嵌入json的原因.

我有一个画廊小部件,用于流量非常高的网站.画廊可以包含100张或更多图像.我一次只显示一个图像,其余图像将延迟加载.但是,所有图像的信息(图像src)将在页面加载的html中呈现.有各种方法在html中呈现图像信息.而不是使用JSON我也可以使用html数据属性,如下所示:

<li class="image" data-src="image-path.jpg">
    <!-- image tag will be created here using javascript -->
</li>
Run Code Online (Sandbox Code Playgroud)

将导致:

<li class="image image-loaded" data-src="image-path.jpg">
    <img src="image-path.jpg" />
</li>
Run Code Online (Sandbox Code Playgroud)

上述解决方案的缺点是额外的标记.我宁愿使用JSON和JavaScript的模板引擎如doT.js.

html javascript json inline dot.js

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

如何在flutter中禁用内联linting规则

有没有办法在颤动中禁用线条的 linting 规则?

我有一个特定的用例,我想禁用两行的 linting。我已经写了很多业务逻辑,所以我无法更改代码。

abstract class ReviewName {
  static final NEW = 'NEW';
  static final OLD = 'OLD';
}
Run Code Online (Sandbox Code Playgroud)

上面的代码会有 linting 错误: Name non-constant identifiers using lowerCamelCase.dart(non_constant_identifier_names)

有什么方法可以避免仅两行的 lint 错误?

lint inline dart flutter disable

17
推荐指数
2
解决办法
6070
查看次数

非积分常数

我想要一个带有非整数常量的头文件,例如一个类.注意常数也并不需要是一个编译时间常数.

static const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)

这编译但不可取,因为每个编译单元现在都有自己的Ten副本.

const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)

这将编译但会因为多重定义的Ten的链接器错误而失败.

constexpr std::string Ten = "10"s;
Run Code Online (Sandbox Code Playgroud)

这可以工作,但前提是字符串构造函数也是constexpr.它会但是我不能指望每个非整数常量都有一个constexpr构造函数......或者我可以吗?

extern const std::string Ten = "10";
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我担心如果我错误地呼吸,我会收到链接器错误.

inline const std::string Ten( ) { return "10"; }
Run Code Online (Sandbox Code Playgroud)

这有我想要的一切,除了干净的语法.另外,现在我必须将常量称为函数调用Ten().

inline const std::string = "10";
Run Code Online (Sandbox Code Playgroud)

这似乎是理想的解决方案.当然inline,标准不允许变量.

  • c ++标准中是否有一些内容表明外部版本应该有用,或者我很幸运它与GCC一起使用?
  • 是否有令人信服的理由不允许内联变量?
  • c ++ 03有更好的方法还是c ++ 0x会有更好的方法?

c++ inline constants c++11

16
推荐指数
3
解决办法
3971
查看次数

如何在iPhone的MFMailComposeViewController中将图像嵌入到html中

我想在html表中嵌入一堆小图像,我想用MFMailComposeViewController发送它.在做了一些搜索之后,我发现几乎所有人都建议使用"Matt Gallagher的NSData + Base64"类来编码Base64encoding中的照片并将其嵌入到html中.虽然它看起来适用于iPhone和一些电子邮件服务器,但Gmail和Yahoo不会以这种方式显示嵌入的图像.这里也提到这个问题.

我想知道是否有人有更好的解决方案.我不想在网上上传照片并将链接放在html代码中.我想将图像附加到电子邮件中,并在html文本,表格中显示为内嵌图像,...

html iphone inline photo image

16
推荐指数
2
解决办法
8980
查看次数

为什么内联构造函数和析构函数在C++中不是一个好主意?

我记得在其中一本C++书籍(很久以前)中读到,内联构造函数和析构函数尤其适用于派生类并不是一个好主意.我理解内联会导致一些膨胀的目标代码,但有没有其他设计考虑因素阻碍内联构造函数和析构函数?当然,大多数编译器可能会拒绝内联并继续创建一个函数体,但如果他们要内联可能需要支付的惩罚?

c++ constructor destructor inline

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

使用dll导出类时__declspec(dllimport)的未解析外部符号

我想基于dll导出的类定义派生类.基类在项目A中定义,派生类在项目B中定义.

首先,在项目A中,定义了预处理器MYDLL_BUILD.我使用头文件来指定导出/导入:

    #if !defined(MYDLL_BUILD)
    #   pragma comment(lib, "myDll.lib")
    #endif

    #if defined(MYDLL_BUILD)
    #   define MYDLL_API __declspec(dllexport)
    #else
    #   define MYDLL_API __declspec(dllimport)
    #endif
Run Code Online (Sandbox Code Playgroud)

然后我定义基类:

class MYDLL_API DllObject
{
public:
    virtual ~DllObject() {}
protected:
    DllObject() { m_count = 3; }
private:
    int m_count;
};
Run Code Online (Sandbox Code Playgroud)

在项目B中,未定义预处理器MYDLL_BUILD.这是派生类:

class MyClass : public DllObject
{
public:
    ~MyClass(){}
    MyClass() { m_data = 20; }
private:
    int m_data;
}; 
Run Code Online (Sandbox Code Playgroud)

我已经包含了dll和lib文件,但仍然得到了未解析的外部符号错误:

2>Test_Entry.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall ADAI::DllObject::~DllObject(void)" (__imp_??1DllObject@ADAI@@UAE@XZ) referenced in function "public: virtual __thiscall …
Run Code Online (Sandbox Code Playgroud)

c++ inline dllimport dllexport visual-c++

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

SASS是否支持内联IF语句?

我想使用内联IF设置一个SASS变量,类似于它在PHP或Javascript中的完成方式

这样的事情可能吗?

$myVar: ($something >= 10 ? true : false);
Run Code Online (Sandbox Code Playgroud)

我知道@if控制指令,但我想使用更短的内联语法.

inline sass

16
推荐指数
1
解决办法
6929
查看次数