小编Mik*_*ike的帖子

奇怪的C++模板问题

因此,基本上我们必须创建一个双重链接列表,这个列表一般是模板化的,而不是锁定到单个数据类型.我已经尝试使用gcc和msvc进行编译,两个编译器都给了我大致相同的错误,所以我假设它只是我的错误编码,而不是一个编译器或另一个编译器的古怪.

目前,我收到错误,说我的课程linkList.h不是模板

../linkList.h:34:错误:'llist'不是模板类型
../linkList.h:143:错误:'iter'不是模板类型
../josephus.cpp:14:错误:' llist'不是模板
../josephus.cpp:14:错误:聚合'llist ppl'的类型不完整,无法定义
../josephus.cpp:15:错误:'iter'不是模板

linkList.h


template<typename T>
class iter
{
public:
iter()
{
    position = sentin;
    container = sentin->payload;
}

T get() const
{
    assert(position != sentin);
    return position->payload;
}

void next()
{
    position = position->next;
}

void previous()
{
    position = position->prev;
}

bool equals(iter itr) const
{
    return position == itr.position;
}
private:
node *position;
llist *container;
};
Run Code Online (Sandbox Code Playgroud)

josephus.cpp


llist<int> ppl;
iter<int> pos;

int start = static_cast<int>(argv[1]) - 1;
int end …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc

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

C#SerialPort - 混合具有不同波特率的端口的问题

我有两个设备,我想通过串行接口连接,但它们有不兼容的连接.为了解决这个问题,我将它们连接到我的PC上,我正在开发一个C#程序,它将把COM端口X上的流量路由到COM端口Y,反之亦然.

该程序连接到两个COM端口.在数据接收事件处理程序中,我读入传入的数据并将其写入另一个COM端口.为此,我有以下代码:

    private void HandleDataReceived(SerialPort inPort, SerialPort outPort)
    {
        byte[] data = new byte[1];

        while (inPort.BytesToRead > 0)
        {
            // Read the data
            data[0] = (byte)inPort.ReadByte();

            // Write the data
            if (outPort.IsOpen)
            {
                outPort.Write(data, 0, 1);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

只要传出的COM端口以高于传入COM端口的波特率运行,该代码就能正常工作.如果传入的COM端口比传出的COM端口快,我开始丢失数据.我不得不纠正这样的代码:

    private void HandleDataReceived(SerialPort inPort, SerialPort outPort)
    {
        byte[] data = new byte[1];

        while (inPort.BytesToRead > 0)
        {
            // Read the data
            data[0] = (byte)inPort.ReadByte();

            // Write the data
            if (outPort.IsOpen)
            {
                outPort.Write(data, 0, 1);
                while (outPort.BytesToWrite > 0);  //<-- Change …
Run Code Online (Sandbox Code Playgroud)

c# serial-port baud-rate

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

如何在JBoss中清除server.log?

JBoss运行时如何清除JBoss的server.log文件?当我尝试做的时候

echo 1 > server.log
Run Code Online (Sandbox Code Playgroud)

我收到错误消息,该文件正由另一个程序(JBoss)使用.是否可以使用命令行工具(windowslinux(我有CygWin))或我可以自己编写的应用程序来清除该文件?

PS我不需要该文件有0kb,但我希望它少于100MB.

java linux jboss log4j logfiles

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

如何在linux中更改文件访问权限?

如何更改文件访问权限?

f = open('test','w')
f.close()
Run Code Online (Sandbox Code Playgroud)

默认访问权限:10600

python

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

设置UsbDeviceConnection的波特率

我想让Android USB主机模式正常工作; 但是我需要将波特率设置为56000.我只找到了这段代码:

UsbDeviceConnection myConnection;
myConnection.controlTransfer(0x40, 0x03, 0x4138, 0, null, 0, 0);//baudrate 9600
Run Code Online (Sandbox Code Playgroud)

在参考文献中我没有找到任何关于此的内容.

非常感谢!

usb android baud-rate

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

Agda 和二叉搜索树

请注意,这是一个作业,所以最好不要发布完整的解决方案,相反,我只是被卡住了,需要一些关于我接下来应该看什么的提示。

module BST where

open import Data.Nat
open import Relation.Binary.PropositionalEquality
open import Relation.Binary
open DecTotalOrder decTotalOrder using () renaming (refl to ?-refl; trans to ?-trans)


data Ord (n m : ?) : Set where
  smaller : n < m -> Ord n m
  equal   : n ? m -> Ord n m
  greater : n > m -> Ord n m

cmp : (n m : ?) -> Ord n m
cmp zero zero       = equal refl
cmp zero (suc …
Run Code Online (Sandbox Code Playgroud)

agda

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

标准C库和系统调用如何协同工作?

我最近对编译器,标准库和内核的内部工作感兴趣.在我搜索标准C库的源代码时,我遇到了Glibc.但它在Glibc的官方网站上说的是:the library which defines the ''system calls'' and other basic facilities such as open, malloc, printf, exit...

所以我猜Glibc实际上并没有提供标准C库的源代码,而是为这些函数提供系统调用,然后内核负责处理它们,对不对?

我想更多地了解这些事情.例如,如何做的sin,printf以及strlen,功能得到C程序执行?如果Glibc只提供系统调用,那些函数的实际源代码在哪里?内核如何执行它们?哪里可以找到执行这些功能的内核部分的源代码?

c compiler-construction kernel glibc standard-library

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

ISO C标准定义了两类符合实现

我读了本关于GCC的官方手册.有时我翻译文本有问题.在第六页(第2.1章)我无法理解这样的文本片段:

ISO C标准定义了(在第4节中)两类符合实现.符合标准的托管实现支持整个标准,包括所有图书馆设施; 一个符合独立的实现只需要提供一定的图书馆设施:那些<float.h>,<limits.h>,<stdarg.h>,和 <stddef.h>; 从AMD1开始,也是那些<iso646.h>; 自C99以来,也是那些<stdbool.h><stdint.h>; 从C11开始,也是那些 <stdalign.h>和.此外,C99中添加的复杂类型不是独立实现所必需的.该标准还为程序定义了两个环境,一个独立的环境,所有实现都需要,并且可能没有超出独立实现所需的库设施,其中程序启动和终止的处理是实现定义的,以及托管环境,不是必需的,其中提供了所有的图书馆设施,并通过功能int main (void)或启动int main (int, char *[]).操作系统内核将是一个独立的环境; 使用操作系统功能的程序通常位于托管实现中.

我不确定我是否理解正确...

我将改述我的理解:

  1. 存在两种ISO C标准实现:完整(称为符合标准的托管实现)和灯(命名为符合自由实现).
  2. 存在两个环境(对于每个标准的实现):托管环境(用于完整标准)和独立环境(用于光标准).

轻型版本用于OS开发.完整版本适用于可在OS中运行的程序.

我不理解关于main功能的短语.

我要求向我解释这段文字.

c gcc

5
推荐指数
2
解决办法
939
查看次数

4#符号是什么?

在Atmel数据表中,我看到了一个我以前从未见过的符号,例如:

寄存器位MAX_BE定义CSMA-CA算法中的退避指数的最大值.它等于macMaxBE; 参见[2]的7.5.1.4节.有效值为[4'd8,4'd7,...,4'd3].

如何解释/解码4'd#值?

embedded

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

哪些部分构成可执行文件的大小?

在尝试理解更大的问题时,我正在进行一些测试.这是我的测试环境:

head.h:

#define MAX_BUFSIZE 500

typedef struct {
    int head;
    int tail;
    int status;
    int active;
    void * dev[MAX_BUFSIZE];
    char free[MAX_BUFSIZE];
    int count;
} msg_fifo_t;

extern msg_fifo_t TxBufx[];
extern msg_fifo_t Rx_Buf[];
Run Code Online (Sandbox Code Playgroud)

test.c:

#include <stdio.h>
#include "head.h"

//msg_fifo_t TxBufx[10];  // This is the important line

int main(int argc, char * argv[])
{
    // This part isn't really important...
    printf("Hello Test\n");

    return 0;
 }
Run Code Online (Sandbox Code Playgroud)

所以我使用这些文件并运行了三个测试来查看我得到的尺寸 -

测试#1(代码如上):

> gcc -Os test.c
> ls -al a.out
-rwxrwxr-x 1 mike …
Run Code Online (Sandbox Code Playgroud)

c linux size gcc compilation

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