小编Reg*_*ser的帖子

为什么两个只有注释的程序二进制文件在gcc中没有完全匹配?

我创建了两个C程序

  1. 计划1

    int main()
    {
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 计划2

    int main()
    {
    //Some Harmless comments
    }
    
    Run Code Online (Sandbox Code Playgroud)

AFAIK,在编译时,编译器(gcc)应该忽略注释和冗余空白,因此输出必须类似.

但是当我检查输出二进制文件的md5sums时,它们不匹配.我也试图与优化的编译-O3-Ofast,但他们仍然不匹配.

这里发生了什么?

编辑:确切的命令和md5sums是(t1.c是程序1,t2.c是程序2)

gcc ./t1.c -o aaa
gcc ./t2.c -o bbb
98c1a86e593fd0181383662e68bac22f  aaa
c10293cbe6031b13dc6244d01b4d2793  bbb

gcc ./t2.c -Ofast -o bbb
gcc ./t1.c -Ofast -o aaa
2f65a6d5bc9bf1351bdd6919a766fa10  aaa
c0bee139c47183ce62e10c3dbc13c614  bbb


gcc ./t1.c -O3 -o aaa
gcc ./t2.c -O3 -o bbb
564a39d982710b0070bb9349bfc0e2cd  aaa
ad89b15e73b26e32026fd0f1dc152cd2  bbb
Run Code Online (Sandbox Code Playgroud)

是的,md5sums匹配多个具有相同标志的编译.

顺便说一句我的系统是gcc (GCC) 5.2.0Linux 4.2.0-1-MANJARO #1 SMP PREEMPT x86_64 GNU/Linux

c optimization gcc binary-reproducibility

109
推荐指数
3
解决办法
5578
查看次数

在哪里学习使用Qt5?

我尝试使用Qt5,但我发现它非常令人困惑.

我对c ++有很好的了解(我会说在中级专家级别之间)但不了解javascript或QML(只有基本的HTML)

当我查看Qt提供的示例和教程时,我发现更多的是参考资料或者对于已经使用Qt的开发人员而言,这是"什么是新的"东西.它向我展示了庞大的Qt库的随机(非系统)部分.

我目前对使用基于Qt小部件的应用程序而不是基于Qt QML的应用程序更感兴趣.

所以这就是我想问的问题.

  1. QML是主要语言而C++只是一种支持语言吗?换句话说,学习QML对于使用QT绝对必要吗?

  2. 使用Qt的基于c ++的应用程序成为事实上的折旧事物?Qt现在只用于QML应用程序吗?

  3. 我需要学习什么才能使用Qt?

c++ qt qml

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

在C和C++中通过引用传递的含义?

我对C和C++中"通过引用传递"的含义感到困惑.

在C中,没有参考.所以我猜通过引用传递意味着传递一个指针.但那么为什么不通过指针调用它呢?

在C++中,我们有指针和引用(以及接近的迭代器之类的东西).那么通过引用传递的是什么意思呢?

c c++ pass-by-reference

8
推荐指数
2
解决办法
6614
查看次数

Spring数据JPA:在结果元组中找不到别名!执行自定义查询时出错

我试图使用@Queryspring data jpa 的注释在mysql数据库上执行自定义查询.

表是

+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| id         | decimal(10,0) | NO   | PRI | NULL    |       |
| first_name | varchar(20)   | YES  |     | NULL    |       |
| last_name  | varchar(20)   | YES  |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

和mysql中的查询是

select last_name,count(last_name) as count from person group by last_name;
Run Code Online (Sandbox Code Playgroud)

在Spring数据jpa中实现这一点.我正在使用这个逻辑,

  1. 创建另一个CountPerson包含两个变量的类,last_namecount
  2. 使用@Query编写查询,该方法返回CountPerson类对象列表.

在spring数据jpa中的查询是

@Query("select p.lastName,count(p.lastName) …
Run Code Online (Sandbox Code Playgroud)

java mysql spring hibernate jpa

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

struct中的一个元素可以在C中访问其自身的另一个元素吗?

我想在struct S中声明一个int num.然后同一个struct也应该有一个大小为num的数组B(所以将从它自己的struct B访问num).

在功能中,我能做到,

func(int A)
{
    int max=A; //I could use A directly, I am just trying to explain my plan.
    int B[max];
}
Run Code Online (Sandbox Code Playgroud)

同样不适用于struct,

struct S {
    int num;
    int data[num]; //this is wrong, num is undeclared
};
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做到这一点吗?

c struct pointers

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

将"指向结构的指针"传递给函数是否在C中创建它的本地副本?

我有这样的结构

struct node
{
    int data;
    struct node* next;
};
Run Code Online (Sandbox Code Playgroud)

我用它来创建单链表.

我创建了其他功能

int push(struct node* head,int element);
Run Code Online (Sandbox Code Playgroud)

它将数据推送到使用节点结构创建的堆栈.

该函数然后尝试struct node* head使用代码更新传递给它(它还做其他事情)

head=(struct node*)malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)

这样的电话是这样的

struct node* stack;
push(stack,number);
Run Code Online (Sandbox Code Playgroud)

看起来这个代码创建了传递给它的指针的副本.所以我不得不将功能更改为

int push(struct node** head,int element)
Run Code Online (Sandbox Code Playgroud)

*head=(struct node*)malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)

这样的电话是这样的

struct node* stack;
push(&stack,number);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,早期的功能是做什么的?struct node**如果我想更新指针的原始值或者我的方法错了,是否有必要传递给函数?

对不起,我无法提供完整的代码,因为它是一项任务.

c struct pointers

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

如何在 ImageView 中设置运行时决定的图像?

我有一个 ImageView,我想在其中根据随机值设置图像

我所知道的是我可以设置这样的图像

 public void onRollClick(View view) {
    String[] images={"dice1.png","dice2.png","dice3.png","dice4.png","dice5.png","dice6.png"};
    int diceValue=new Random().nextInt(6);
    ImageView diceImage= (ImageView) findViewById(R.id.imageView);
    diceImage.setImageResource(R.drawable.dice5);
}
Run Code Online (Sandbox Code Playgroud)

onClick单击时调用其中方法Button。所有图像都在drawable目录中。目前,我总是设置 image dice5.png。我该如何设置images[diceValue] 图像?

注意:我使用的是 API 22

android image

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

如何在 Spring Boot 中使用 JPA 的 entityManager.getReference?

/sf/answers/898026881//sf/answers/2252893051/这样的答案以及许多其他人提到了一些enitityManager.getReference()方法,可以用来避免对数据库进行不必要的选择查询.

我在 spring boot 应用程序中遇到了类似的问题,当尝试将对象保存到数据库时,使用CRUDRepository. 我的班级看起来像,

class StudentSubject {
    String studentId;
    @ManyToOne
    private Subject subject;
    @ManyToOne
    private Student student;
}
Run Code Online (Sandbox Code Playgroud)

我必须不必要地find()调用从数据库中获取学生和主题对象,只是将它们传递StudentSubjectRepositorysave()他们。但是我已经有了主题和学生的主键。所以我想改用它们,entityManager看起来像我需要的。

但是我不知道这个 entityManager 来自哪里,或者在 Spring Boot 中是否有任何等效的东西。

java spring jpa spring-data-jpa spring-boot

3
推荐指数
2
解决办法
1438
查看次数

如何在c ++中将变量四舍五入到n位小数

我有一些float变量会产生像 1.23456789 这样的值。我想把它四舍五入到小数点后 4 位。

setprecision 函数只对输出进行舍入,但我想更改变量本身的值。

所以我正在寻找类似的东西

x=roundoff(x,n)
Run Code Online (Sandbox Code Playgroud)

其中 roundoff 会将 x 舍入到 n 位小数。

c++ floating-point-precision

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

Spring Security:如何从委托人处获取详细信息?

使用 spring boot 和 spring security,用户的详细信息在主体对象中可用。但是它只有很少的方法来检索详细信息,例如getName().

我如何从中获取其他详细信息?

目前我的班级看起来像这样

@SpringBootApplication
@RestController
public class DemoOAuth2Application {

    @RequestMapping("/user")
    public Principal user(Principal principal) {
        return principal;
    }


    public static void main(String[] args) {
        SpringApplication.run(DemoOAuth2Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

它返回这个,

{
  "authorities": [
    {
      "authority": "ROLE_USER"
    }
  ],
  "details": {
    "remoteAddress": "0:0:0:0:0:0:0:1",
    "sessionId": "43Fxxxxxx",
    "tokenValue": "ya29.xxxxxxxxx",
    "tokenType": "Bearer",
    "decodedDetails": null
  },
  "authenticated": true,
  "userAuthentication": {
    "authorities": [
      {
        "authority": "ROLE_USER"
      }
    ],
    "details": {
      "id": "106xxxxx",
      "email": "xxxxxxxx@gmail.com",
      "verified_email": true,
      "name": "xxxx yyyyyy",
      "given_name": …
Run Code Online (Sandbox Code Playgroud)

java spring-security

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

c ++是否支持自己绘制图形?

在过去(Borland的那些)你可以使用c和c ++中的graphics.h头文件来绘制线条,正方形或圆形等图形.这是由turbo c ++支持的.

如今,我猜推荐绘制图形的方法是使用OpenGL或DirectX.

我只想知道是否仍然存在一种在c ++中绘制线条等基本图形的方法,类似于我们以前在tc ++中的做法.如果有,怎么样?

原因:这一切都始于我无法在竞赛中解决问题,要求我使用c ++绘制一些曲线.他们使用tc ++(!?!)并期望我们使用graphics.h头文件.

我不知道这样做,因为我没想到我需要以c ++(过时)方式绘制图形.无论如何,我仍然试图找到一个解决方案,我使用现代编译器,如gcc(g ++),仍然绕过OpenGL.我不想回到tc ++.

BTW我正在使用Ubuntu和gcc.我在c/c ++中编程的方式是在文本编辑器中编写代码,然后使用CLI编译它.

c++ graphics

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

与equals()的Java字符串比较与UDP无法正常工作

我试图通过UDP发送消息并将其与字符串文字进行比较,但它似乎不起作用.

这是UDP服务器代码

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Controller {

    public static void main(String args[]) {


        //create UDP server
        try {
            DatagramSocket socket = new DatagramSocket(5002);
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

            //wait for done message
            socket.receive(packet);
            String msg = new String (packet.getData());
            if(msg.equals("Done"))
            {
                System.out.println("Done received");
            }
            else {
                System.out.println("Done not received");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是UDP客户端代码

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Slave …
Run Code Online (Sandbox Code Playgroud)

java string udp

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