编程遇见问题(遇见2030编程)

2023-11-14 09:50:39 数码极客 bianji01

 

初学编程的人一般会遇到的几个问题

对于一个初学编程的人来说,首先遇到的问题就是:(1)、在编写源程序过程中出现的各种语法错误。这种错误主要是由于刚刚开始学习编程,对编程语言的语句、以及语法结构还不是很清晰造成的,这种错误是最容易进行调试的,因为语法错误,编译器连编译都无法通过;(2)、当对初始编程较为熟练了、且语法错误较少了之后,之后就会遇到更为复杂、并且难于调试的语义错误。例如在C语言中,对于如下代码:

voidmain()

intn;

scanf("%d",&n);

if(n==100)

printf("nis100!\n");

printf("nisnot100!\n");

在逻辑判断语句:if(n==100)中,如果误将“==”(逻辑等于)写成了“=”(赋值等于),那么在scanf("%d",&n)语句中,无论你输入的n等于多少,一旦执行if语句,那么将100这个数字赋给变量n,则该逻辑表达式的值总是1,程序的运行结果必定总是输出:nis100。

而该程序的实际思路是:从键盘输入一个整数,如果该整数等于100,则输出:nis100!

如果输入的整数不等于100的话,则输出:nisnot100!

像这样的逻辑错误(在编译源程序时,C语言编译器是检查不出来的),如果没有丰富的程序调试经验,程序调试起来就是非常困难的。

所以说,如果想学习编程,必须要勤于上机编辑、调试、运行程序,而不能够只是在书本上阅读程序。只有这样,才能够在较短的时间内,使自己的编程水平有一个较的提高。

Qt程序设计中遇到的一些问题总结-dbus篇

这段时间完成了一个Qt程序,并且已经发布,在这里记录下自己在整个设计中遇到的一些坑。关于qtbbus我这里主要写一些systembus方面的一些问题。通过AddBus一个简单的类来描述整个实现过程。在qt中访问dbus,需要在*.pro文件中添加CONFIG += qdbus服务端非常简单,它只有一个函数实现返回两个参数之和的功能。#include class AddBus : public QObjectQ_OBJECTpublic:explicit AddBus(QObject *parent = 0);~AddBus();public Q_SLOTS:int add(int a, int b);};实现完成整个基本功能之后需要在qdbuscpp2xml这个软件的帮助下把接口导出称为xml文件。qdbuscpp2xml addbus.h -o addbus.xml一般来说生成的xml中关于这一项的定义都不是非常符合我们的要求,需要重新填写。这里我修改为然后通过qdbusxml2cpp命令生成适配器类qdbusxml2cpp addbus.xml -a addbus_adaptor把生成的addbus_adaptor类导入pro中。编辑main.cpp文件#include "addbus.h"#include "addbus_adaptor.h"#include #include int main(int argc, char *argv[])QApplication app(argc, argv);AddBus *add = new AddBus();new ManagerAdaptor(add);QDBusConnection conn = QDBusConnection::systemBus();if (!conn.registerService("com.example.addbus"))qDebug() << conn.lastError().message();conn.registerObject("/", add);return app.exec();}完成main文件之后,我们就可以编译运行整个程序了,但是我们第一次运行这个程序时,会有一些问题sudo ./bus-daemon"Connection ":1.181" is not allowed to own the service "com.example.addbus" due to security policies in the configuration file" 这是说我们刚才注册的com.example.addbus没有在dbus的配置文件中,所以运行不了。这就要涉及到/etc/dbus-1/system.d/目录了,这个目录下面存放了所有systembus的配置文件,我们可以使用其中的文件作为参考来配置我们的配置文件。vim com.example.addbus.conf拷贝com.example.addbus.conf文件至/etc/dbus-1/system.d/目录下面。通过上面的命令就可以运行dbus-damon程序了,然后使用d-feet工具尝试访问com.example.add总线,并尝试执行add操作。客户端简单描述如何初始化一个systembus和调用server端提供的接口m_interface = new ComExampleAddbusManagerInterface("com.example.addbus", "/",QDBusConnection::systemBus(), this);if (!m_interface->isValid())qDebug() << m_interface->lastError().message();m_sum = m_interface->add(m_a, m_b);一般来说dbus提供了自动拉起server的功能,这时候需要我们配置一个service服务。这个配置文件需要放在/usr/share/dbus-1/system-services/目录下面。vim com.example.addbus.service[D-BUS Service]Name=com.example.addbusExec=/home/crystal/workspace/build-systembus-Desktop-Debug/bus-daemon/bus-daemonUser=root这时候我们还是拉不起服务,如果我们手动启动后台服务,则整个程序还是可以正常运转的。这是因为我们的后台服务采用了QApplication启动的,如果我们换成QCoreApplication则可以正常拉启后台服务。

编程时遇到的问题

编程时遇到的问题

你的编译器卡住了,,建议你到进程里面关闭进程,然后重新启动就可以编译了。

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告