小编m4l*_*90n的帖子

什么相当于Linux中的Win32 API?

我不想知道Windows和Linux中的API函数之间是否存在一对一的等价关系,也不想知道每个API函数.

我只想知道两件基本的事情:

  1. 我想了解为什么Qt平台独立
  2. 我想知道我应该在linux中使用什么API来移植使用Win32 API编程的应用程序,或者换句话说,在Win32 API级别.

我知道这不实用,但我想知道这种等价.

linux api winapi

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

make:g ++:找不到命令

我检查了类似的帖子,任何人都解决了我的问题.我很简单,但我是eclipse的新手.我想做一个简单的例子,我遇到了这个问题.

make文件就是这个

all: hello.exe

clean:
    rm Hello.o Hello.exe

hello.exe: hello.o
    g++ -g -o hello.exe hello.o

hello.o:
    g++ -c -g main.cpp
Run Code Online (Sandbox Code Playgroud)

我收到此错误"make:g ++:Command not found"

谢谢你的帮助.

c++ eclipse windows cygwin g++

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

Netbeans代码模板格式化语法

我想知道netbeans ide中用于格式化代码模板的语法或语言是什么.我的意思是,在默认模板中我可以看到类似的东西;

while (${EXP default="exp"})
{ 
   ${selection line}${cursor} 
}
Run Code Online (Sandbox Code Playgroud)

和:

// <editor-fold defaultstate="collapsed" desc="${comment}">
${selection}${cursor}// </editor-fold>
Run Code Online (Sandbox Code Playgroud)

我试验并做到了这一点:

int ${IDX newVarName default="loop"};

for (${IDX} = 0; ${IDX} < ${SIZE int default="size"}; ${IDX}++)
{
   ${cursor}
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我真的不知道"$ {IDX}""$ {SIZE int default ="size"}""$ {selection} $ {cursor}"来自哪里以及其他什么陈述我可以用来格式化我的模板.

这是一些脚本或编程语言吗?

我在哪里可以找到这些信息?

syntax netbeans code-formatting

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

如何在UML序列图中表示中断?

我想设计一个简单的嵌入式系统.关于这一点的特殊之处在于我想使用UML设计其架构.在我正在使用的其他图表中,我有一个序列图,如下图所示.

在此输入图像描述

我在这里想要描述的是,在没有事件的情况下,"LOOP"片段中包含的序列一次又一次地执行.

图中最右侧的中断服务程序(ISR)块是一个异步执行并生成等待事件的块.

这里的问题是,由于事件可能在循环序列期间的任何时间生成,每隔一段时间,例如每10毫秒,并发送到"模块2",我不知道如何表示这一点.

如果我只是将消息箭头指向"ISR"块指向"模块2",我理解这意味着包含该事件的消息将作为循环的一部分从"ISR"发送到"模块2",每次循环执行,但这不是我需要的.我需要描述这样一个事实,即从"ISR"到"模块2"的消息仅每X毫秒发送一次,或者随机发送(如果是硬件中断).

有什么建议?

embedded uml loops interrupt sequence-diagram

7
推荐指数
2
解决办法
4417
查看次数

结构数组初始化中的MISRA-C错误

我有以下内容:

typedef struct
{
   uint8_t BlockID;
   uint32_t Copies;
   uint16_t Size;
}NVMM_ConfigType;

const NVMM_ConfigType NvmmCnf_Layout[6] =
{
   {  1, 1,   4},
   {  2, 3,   4},
   {  5, 5,  16},
   { 10, 1,   4},
   { 11, 2,  32},
   { 13, 1, 100},
};
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很好,但是,MISRA-C给出了以下错误:

MISRA C:2012规则10.3违规:[R]表达式的值不得分配给具有较窄基本类型或不同基本类型类别的对象

我试图弄清楚为什么会这样,但我只能看到它.在类似的情况下,构建结果也会受到这种错误的困扰,我不知道为什么.

有人知道发生了什么吗?

编辑:我也尝试显式转换每个值仍然得到相同的错误:

const NVMM_ConfigType NvmmCnf_Layout[6] =
{
    {  (uint8_t)1, (uint32_t)1,   (uint16_t)4},
    {  (uint8_t)2, (uint32_t)3,   (uint16_t)4},
    {  (uint8_t)5, (uint32_t)5,  (uint16_t)16},
    { (uint8_t)10, (uint32_t)1,   (uint16_t)4},
    { (uint8_t)11, (uint32_t)2,  (uint16_t)32},
    { (uint8_t)13, (uint32_t)1, (uint16_t)100},
};
Run Code Online (Sandbox Code Playgroud)

c misra array-initialization

7
推荐指数
2
解决办法
1617
查看次数

为什么在一个序列点内只有一个具有volatile限定类型的读访问权限?

给出以下代码:

static volatile float32_t tst_mtr_dutycycle;
static volatile uint8_t tst_mtr_direction;
static volatile uint32_t tst_mtr_update;

void TST_MTR_Task(void)
{
    if (tst_mtr_update == 1U)
    {
        tst_mtr_update = 0;

        MTR_SetDC(tst_mtr_dutycycle, tst_mtr_direction);
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现了MISRA C 2012 Rule-13.2的问题,我决定做一些研究.我在这里找到了(http://archive.redlizards.com/docs/misrac2012-datasheet.pdf):

在一个序列点内,只有一个具有volatile限定类型的读访问权限

这里的事情是我无法找到一个例子或解释,清楚地说明为什么在一个序列点内不得有多于一个具有volatile限定类型的读访问.

我需要找到违规代码的解决方案,但我不清楚该怎么做.

我现在知道在一个序列点内只有一个具有volatile限定类型的读访问权.问题是,为什么?我需要知道为什么要实现解决方案并在此解释每个人为什么要更改代码.

问候.

c volatile misra

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

使用Eclipse IDE在C++中编程GUI需要做些什么?

我想知道在C++程序中添加GUI需要什么.我的意思是有一些按钮,滑块,窗口,文本框等,但不必使用visual studio.

这可能吗?是否有一个eclipse插件允许在我的程序中编程/包含GUI?

或者有人知道如何手动编程窗口或按钮或滑块或文本框?

我知道这将是非常密集和耗时但我想知道如何手动这种GUI对象.

c++ eclipse user-interface eclipse-plugin

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

如何在ansi-c中使用指向全局结构的指针?

情况就是这样.在文件"fileA.c"中我有

typedef struct MY_STRUCT
{
  int A;
  int B;
  int C;
}MY_STRUCT;

MY_STRUCT Data;

/* Function */
int function(MY_STRUCT *params)
{
  int varA, varB, varC;

  varA = params->A;
  varB = params->B;
  varC = params->C;
}
Run Code Online (Sandbox Code Playgroud)

我需要从其他例程中填充struct元素,例如"fileB.c",其中包含以下内容:

extern MY_STRUCT Data;

int function(MY_STRUCT *params);

/* Function  */
void userMain(void)
{
  Data.A = 1254;
  Data.B = 5426;
  Data.C = 1236;

  function(&Data);
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误:

"[错误] fileB.c E208:语法错误 - 在"数据"之前插入标记";"

当我交叉探测错误时,编译器将我带到声明"extern MY_STRUCT Data;"

所以我的问题是如何实现这一功能?我的意思是,如何在另一个文件中填充结构元素,这个文件不同于我声明结构的文件?

c struct

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

具有构造函数定义但没有实现它的代码的 C++ 类?

我在单个 .h 文件中有以下类:

class MyClass
{
protected:
   MyClass();
   ~MyClass();

private:
   MyClass(const MyClass&);
   MyClass& operator=(const MyClass&);
};

inline MyClass::MyClass()
{
}

inline MyClass::~MyClass()
{
}
Run Code Online (Sandbox Code Playgroud)

令我感到困惑的是,没有实现MyClass(const MyClass&)复制构造函数和MyClass& operator=(const MyClass&)赋值运算符重载的代码。这个类只有定义,但没有别的。

我在我正在分析的代码中看到了这一点,并且它编译得很好。我是 C++ 新手,在我见过的所有示例中,我都在类中找到了定义,在下面或单独的 .cpp 文件中找到了实现

那么,任何人都可以解释为什么这段代码会编译,为什么只包含函数的声明而不包含它的实现?

谢谢!!

c++ class copy-constructor function-declaration

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

如何在不丢失位的情况下执行c的移位?

在C中你做这样的事情:

char var = 1;

while(1)
{
  var = var << 1;
}
Run Code Online (Sandbox Code Playgroud)

在第8次迭代中,"<<"运算符将移出1并且var将为0.我需要执行移位以保持位移位.换句话说,我需要这个:

首字母----- 00000001

第一班 - 00000010

第二班 - 00000100

第3班 - 00001000

第四班 - 00010000

第五班 - 00100000

第6班 - 01000000

第7班 - 10000000

第8班 - 00000001(第8班,自动重启)

有没有相当于"<<"的东西,但实现这一点?

c operators shift

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

为什么在将它分配给C中的同一枚举变量类型时必须强制转换枚举元素?

我有以下内容:

typedef enum
{
   FLS_PROG_SUCCESS,
   FLS_PROG_FAIL,
   FLS_ERASE_SUCCESS2U,
   FLS_ERASE_FAIL,
   FLS_READ_SUCCESS,
   FLS_READ_FAIL,
   FLS_FORMAT_SUCCESS,
   FLS_FORMAT_FAIL
}FLS_JobResult_t;

void Foo(void)
{
   FLS_JobResult_t ProgramStatus;

   /* Then I try to initialize the variable value */
   ProgramStatus = FLS_PROG_SUCCESS;

   ...
}
Run Code Online (Sandbox Code Playgroud)

无辜呃,但在编译MISRA C时会出错:

表达式的值不应分配给具有较窄基本类型或不同基本类型类别的对象

我发现我将按如下方式编写初始化:

ProgramStatus = (FLS_JobResult_t)FLS_PROG_SUCCESS;
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来不太好,就像MISRA希望我在所有代码中抛出强制转换,这太过分了.

你知道为什么吗?我不认为这应该是一个问题,但我已经尝试了所有我想到的东西,这是摆脱这个错误的唯一方法,但它根本没有任何意义,是吗?

问候.

enums casting compiler-errors misra

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

如何为Java ee开发人员将c / c ++包“添加”到eclipse?

好的,这是问题。我不想有两个月食,我只想有一个c / c ++和Java EE。在eclipse.org的软件包比较链接中,列出了每个软件包的功能。从那里可以看到,我认为如果我拥有“ JAVA EE”,则只需要添加“ EGit”,“ Linux Tools”和“ CDT”即可拥有两个完整的软件包。

但是我问,这是透明的吗?只需添加这些就可以了?

如果是这样,我该怎么做?只需将这三个添加到我已经拥有的Java EE中?我的意思是实现这种整合的程序是什么?

c c++ java eclipse java-ee

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

当从 float 转换为 double 时,如何防止 c++ 添加额外的小数(不适用于 IO)?

我面临的问题是因为我正在使用一个库,当输入 a 时float,它会在内部执行一些操作,将 float 转换为 double 并向不正确的数字添加很多小数。我的意思是,根据双打和浮点数的表示方式以及投射时自然发生的情况,这是正确的,但它不适合我的应用程序。我有16.3asfloat并且我需要它是16.3as double

我试图在将值传递给库之前将浮点数转换为 double 以控制该转换,但到目前为止我还没有找到一种简单的方法。我只是想知道是否有可能从float到投射 16.3double并得到相同的 16.3 结果。

float f_var = 16.3;            // f_var is 16.3
double d_var = (double)f_var;  // d_var shall be also 16.3, not 16.299999237060547
Run Code Online (Sandbox Code Playgroud)

在 C++ 中是否有正确的方法来做到这一点?或者我必须做类似的事情:

char float_buf[10];
float f_var = 16.3;
sprintf(float_buf, "%.2f", f_var);
double d_var = atof(float_buf);
Run Code Online (Sandbox Code Playgroud)

因为这是可行的,但我想看看在 C++ 中是否有一种“正确”的方法来做到这一点。

SO 中有另一个建议的解决方案,但它涉及乘法和除法,我也想避免。

这不是用于显示或任何输入/输出操作或转换为字符串,我知道如何做到这一点并且有很多关于它的信息。此外,我并不是想理解“为什么”会发生这种情况,还有很多关于此的信息。

另外,SO中可能导致这个问题被标记为重复的大多数答案都不是针对C++的,它们主要是针对C#、Java JS、Objective C等的。对于我发现的关于C/C++的少数答案,大多数都是针对C/C++的。正在用printfor处理 IO 的这个问题,cout其他人只解释为什么会发生这种情况,这也是没有用的。如果您确实有一个完全用 …

c++ precision

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