小编Lun*_*din的帖子

没有iFrame的情况下,如何制作JavaScript小部件?

我有一个聊天窗口小部件,我想将其嵌入其他人的网站。看起来就像对讲机和所有其他聊天弹出窗口。无论滚动到何处,我都希望使聊天弹出窗口停留在屏幕的右下角。但是,当我将聊天应用程序导入为iframe并提供给iframe时position: fixed; bottom: 0px; right: 15px;,iframe不会到达我期望的位置。

我意识到iframe对于嵌入式JS小部件而言不是最佳选择,所有最好的嵌入式应用程序都从文件存储中导入.js文件。在网上搜索了几个小时之后,我还没有找到关于如何制作那些挂接到a并呈现小部件的JS文件的解释/教程。您甚至怎么做那些纯JavaScript应用之一,它们又叫什么?(我假设不是Web组件,因为已经有很长时间的小部件了)。

抱歉,这个问题有点儿菜鸟。在我自己尝试实现之前,我从来不知道这是一回事。任何人都可以向我指出如何开始制作JS网络小部件的正确方向?谢谢!(也许ReactJS到VanillaJS转换器会超级酷)

iframe widget web-component reactjs

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

每个转换是否与输入/输出格式说明符相关联C中的序列点?

关于C中序列点的维基百科条目具有以下序列点:

与输入/输出格式说明符关联的每次转换后.例如,在表达式printf("foo%n%d",&a,42)中,在评估%n之后和打印之前有一个序列点42

但C标准也说:

函数指示符的评估顺序,实际参数和实际参数中的子表达式是未指定的,但在实际调用之前有一个序列点.

对于像这样的代码,这两点似乎是矛盾的

int i=1;
printf("%d, %d and %d\n", i++, i++, i--); 
Run Code Online (Sandbox Code Playgroud)

根据每个格式说明符后的维基百科条目,有一个序列点,所以它将打印如下: 1,2,3

但根据C标准中未指明的beaviour条目,它可以打印任何东西.

c stdio operator-precedence undefined-behavior sequence-points

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

在C编程中,所需的L值是语义错误还是语法错误?

1. int main(void) 
2. { 
3.   int a =5, b = 6, c; 
4.   a + b = c; // lvalue required error
5.   2 = a ;     //lvalue required error
6. } 
Run Code Online (Sandbox Code Playgroud)

第4行和第5行代码被视为语法错误或语义错误?据我说,这些行应该抛出语法错误,但我发现Context Free Grammar可以生成它们.

c syntax-error lvalue language-lawyer

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

在win32中重定向stdout不会重定向stdout

我正在尝试重定向stdout,以便Windows应用程序中的printf将转到我选择的文件.

我这样做:

outFile = fopen("log.txt", "w");
*stdout = *outFile;
setvbuf(stdout, NULL, _IONBF, 0);
Run Code Online (Sandbox Code Playgroud)

但printf仍然写入控制台(或基于GUI的win32应用程序无处可写)

我可以通过这样做重定向'std :: cout':

outFileStr = std::ofstream(outFile);         
std::cout.rdbuf(outFileStr.rdbuf());
Run Code Online (Sandbox Code Playgroud)

但是printf似乎在做自己的事情.不幸的是,我需要重定向printf,因为我正在尝试将python集成到C++框架中,并且它似乎依赖于printf而不是std :: cout.

std :: cout'似乎被重定向但不是printf.

c c++ printf

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

(CAN) 什么是 RTR 和 SRR 位?

RTR和SRR是缩写吗?

我知道两者都是位,但是当系统中没有 29 位标识符时,我对 RTR 所扮演的角色感到困惑,因为我相信仅标识符就足以发送消息。或者 CAN 是否自动假设我们在系统中具有不同的标识符长度,并且只有 SRR 位和 RTR 位才重要?

embedded can-bus

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

运算符“ ++”的不允许操作数[MISRA 2012规则10.1,必填]

我正在尝试为其他人编写的模块修复Misra警告。我观察到++正在对进行操作enum

我提到了关于同一主题的SE问题。如何解决此错误?我是否需要建议模块所有者来更改实现?

#include <stdio.h>

typedef enum
{  
    COMPARE = 0,
    INCONSISTENT = 10,
    WRITE,
    READ,
    FINISHED  
}TestsType;

static TestsType CurrentTest;

void fun1(void)
{

    if(READ != CurrentTest)
    {

            CurrentTest++;
    }
    else
    {
            CurrentTest = FINISHED;
    }
}

int main(void) {
    // your code goes here

    CurrentTest = COMPARE;
    fun1();
    printf("%d", CurrentTest);

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

我将enum这样的代码故意保留在代码中以了解任何影响。但是,在实际代码中,如下所示。

typedef enum
{  
        COMPARE,
        INCONSISTENT,
        WRITE,
        READ,
        FINISHED  
}TestsType;
Run Code Online (Sandbox Code Playgroud)

c enums misra pc-lint

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

为什么 itoa 需要有符号字符而不是无符号字符?

在使用 PIC24FJ128GB204 的 MPLAB X 中学习嵌入式 C。

到目前为止,我主要听说在嵌入式设备上应该尽可能多地使用无符号类型(尤其是?),所以我开始使用 uint8_t 数组来保存字符串。但是,如果我从 stdlib.h 调用 itoa,它需要一个指向有符号字符 (int8_t) 数组的指针:

extern char * itoa(char * buf, int val, int base);

当我在无符号数组上使用 itoa 后尝试编译时,这一点特别清楚:

main.c:317:9: warning: pointer targets in passing argument 1 of 'itoa' differ in signedness
c:\program files (x86)\microchip\xc16\v1.36\bin\bin\../..\include/stdlib.h:131:15: note: expected 'char *' but argument is of type 'unsigned char *'
Run Code Online (Sandbox Code Playgroud)

在其他平台上搜索 itoa 的实现,这似乎是常见的情况。

这是为什么?

(我还注意到大多数实现都需要值/指针/基数,而出于某种原因,来自 Microchip 的 stdlib.h 首先需要指针。我花了一段时间才意识到这一点。)

c embedded pic itoa mplab

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

堆栈中每个存储单元的大小是多少?是否可以拆分一个单元

在64位系统中,每个内存单元都是64位的,那么它如何保存一个包含更少空间的int变量呢?无论如何,它不会花费一个 64 位地址吗?如果是这样,如果它们要以任何方式捕获一个单元格,为什么还要费心使用不同类型的变量呢?

c ram

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

使用system()运行程序

如何从Windows 7中的c程序运行另一个程序?我正在使用dev-c ++.这是我的代码:

#include<stdlib.h>    
#include<stdio.h>    
#include<conio.h>    

int main( void ) {    
    int result ;
    result=system("C:\Dev-Cpp\devcpp.exe\s");    
    printf("%d",result);
    getch();
} 
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
124
查看次数

简单while循环的问题

我是Mike McGrath编写的一本名为c ++编程的书的"循环时段".

在书中它解释了while循环如何工作以及它能做什么和不能做什么等.它给出了一个我大部分理解的示例代码,除了本书没有解释的东西,我想知道你是否有人能解释它.

这是代码:

#include <iostream>
#include <vector>
using namespace std ;

int main(){

 vector <int> vec(10) ;
 int i = 0 ;


  while (i < vec.size()){
    i ++ ; 
    vec[i-1] = i ;
    cout << " | " << vec.at(i-1) ;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,这就是我读这篇文章的方式,我确信我读错了,因为结果对我来说没有意义:

当我小于10(向量的大小)时继续执行此代码.所以整数i是0,但它在代码开头增加到1.然而,接下来是我很困惑的部分.

它说vec [i-1],为什么他减去1?然后让它等于我?如果我试图让vec[i] = i;程序崩溃.所以我读它的方式是,vec[i - 0 ]必须为0,因为0在while循环的前一步骤中仅增加到1.然后为了显示结果,他再次将命令调用vec.at()到i-1,这进一步让我感到困惑.我根本不明白向量中-1的含义.括号内的含义是否意味着向量中的位置?

代码

执行

c++ loops vector while-loop

0
推荐指数
1
解决办法
706
查看次数