小编Shi*_*dia的帖子

关于不完整类型的结构的初步定义

将以下内容视为C文件:

static struct S a;

int main() {
  return (long)&a;
}

struct S {
  int b;
} s;
Run Code Online (Sandbox Code Playgroud)

根据我对C11规范的阅读,我认为这是未定义的行为。6.9.2状态:

具有文件范围而没有初始化程序,没有存储类说明符或具有存储类说明符静态的对象的标识符的声明构成了临时定义。

并在语义标题下(不是约束):

如果对象标识符的声明是一个临时定义,并且具有内部链接,则声明的类型不应是不完整的类型。

似乎第一行的声明是一个临时定义,并且该对象a具有内部链接,但struct S在声明时其类型不完整。因此,我希望这会违反第二个引号,从而导致未定义的行为。

但是,使用这些--std=c11 -Wall -pedantic标志运行时,GCC不会打印任何诊断信息。我是不是误解了标准,还是GCC没有为这种类型的不确定行为打印诊断?

c language-lawyer c11

5
推荐指数
1
解决办法
457
查看次数

将 B 样条写入分段三次

我正在使用 Scipy 的 SmoothBivariateSpline 类在双变量数据上创建三次 B 样条。我现在需要为这条样条曲线编写分段多项式表达式。

我的数学背景不是很强,所以我无法编写自己的算法来将 SmoothBivariateSpline 的 t、c、k 输出转换为多项式表示。如果这是可行的,您能否提供有关如何解决此问题的指示?我注意到 Scipy 有 interpolate.ppform,但我找不到它的任何文档 - 这是否相关?

我正在考虑的一种方法是将样条的域分解为每个结的区域((n-1)^2总区域,其中n是结的数量),然后对每个区域中样条曲线上的许多点执行三次回归以计算对每个区域的数据进行三次回归。这是一种有效的方法吗?

前一种方法似乎更严格,所以我更喜欢使用那种方法,但后者也可以接受。

python regression numpy spline scipy

3
推荐指数
1
解决办法
1525
查看次数

在类声明中缺少分号

我怀疑这是一个非常小的问题,但我花了几个小时试图解决它并且没有找到任何东西.

在Game.h(头文件)中,我有以下内容:

#pragma once

#include "PlayEngine.h"

class Game {

public:
    int Init();
    int Run();
    int Shutdown();

private:
    enum State { ST_MENU, ST_PLAYING } state;
    PlayEngine* playengine_;
};
Run Code Online (Sandbox Code Playgroud)

编译器抛出语法错误PlayEngine* playengine_,抱怨;在之前丢失了*.PlayEngine是我在其他地方定义的课程.

我错过了什么?

c++ syntax-error

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

NAudio峰值体积计

我正在尝试用NAudio写一个峰值音量表.我的代码与http://channel9.msdn.com/coding4fun/articles/NET-Voice-Recorder非常相似,但我的代码和链接的录音机项目都遇到了问题.

当播放恒定频率和音量的声音时,音量计最初开始于合理的水平,但随后衰减到非常小的值.我不确定为什么会这样,因为NAudioDemo中的峰值音量表不会这样做.我试图在程序中复制NAudioDemo中的代码,但是我无法找到包含峰值音量表代码的代码文件.

有人可以指导我创建峰值音量计的替代解决方案,或者帮助我确定为什么我的解决方案(以及链接中提供的解决方案)都不起作用?

public MainWindow()
    {
        int waveInDevices = WaveIn.DeviceCount;
        for (int waveInDevice = 0; waveInDevice < waveInDevices; waveInDevice++)
        {
            WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice);
            Console.WriteLine("Device {0}: {1}, {2} channels",
                waveInDevice, deviceInfo.ProductName, deviceInfo.Channels);

            WaveIn waveIn = new WaveIn();
            waveIn.DeviceNumber = 0; //TODO: Let the user choose which device, this comes from the device numbers above
            waveIn.DataAvailable += waveIn_DataAvailable;
            int sampleRate = SAMPLE_RATE; // 8 kHz
            int channels = 1; // mono
            waveIn.WaveFormat = new WaveFormat(sampleRate, channels);
            waveIn.StartRecording();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# naudio

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

标签 统计

c ×1

c# ×1

c++ ×1

c11 ×1

language-lawyer ×1

naudio ×1

numpy ×1

python ×1

regression ×1

scipy ×1

spline ×1

syntax-error ×1