小编mot*_*oku的帖子

这种疯狂是什么?

我从未见过这样的事; 我似乎无法绕过它.这段代码甚至做了什么?它看起来非常华丽,我很确定这些东西在我的C书中没有任何描述.:(

union u;
typedef union u (*funcptr)();

union u {
  funcptr f;
  int i;
};

typedef union u $;

int main() {
  int printf(const char *, ...);

  $ fact =
      ($){.f = ({
            $ lambda($ n) {
              return ($){.i = n.i == 0 ? 1 : n.i * fact.f(($){.i = n.i - 1}).i};
            }
            lambda;
          })};

  $ make_adder = ($){.f = ({
                       $ lambda($ n) {
                         return ($){.f = ({
                                      $ lambda($ x) {
                                        return ($){.i = n.i + …
Run Code Online (Sandbox Code Playgroud)

c gcc

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

以编程方式从GUI创建具有外部JAR的Runnable JAR?

我有一个简单的测试程序,只有一个按钮.当用户单击该按钮时,该程序应该创建一个Runnable JAR.Runnable JAR是一个简单的程序,可以在Firefox中打开google.com.该计划有三个班级.


1)Main.java

 package test;

    public class Main {

        public static void main(String[] args) {

            Selenium.getGoogle();

        }

    } 
Run Code Online (Sandbox Code Playgroud)

2)Selenium.Java

package test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Selenium {

    public static void getGoogle () {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://google.com");
    }

}
Run Code Online (Sandbox Code Playgroud)

3)TestGUI.java

package test;

import javax.swing.*;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class TestGUI extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;

    public TestGUI() {

        setSize(200, 100);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        /* …
Run Code Online (Sandbox Code Playgroud)

java java-compiler-api

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

打开蓝牙并等待意图?

我有一个需要一些蓝牙设置的Android应用程序;见下文:

if (!Constants.mBluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
while (!Constants.mBluetoothAdapter.isEnabled()) {
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        System.exit(1);
    }
}
if (Constants.mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
    Intent discoverableIntent = new
        Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
        startActivity(discoverableIntent);
}
while (Constants.mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        System.exit(1);
    }
} // do some stuff with bluetooth
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是一种hack,仅当用户选择“是”时,它才起作用。我很确定我需要等待这些意图的结果。怎么做?

android bluetooth android-intent

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

解析以太网帧和数据类型

我有一个看似简单的任务,即打印有关通过特定以太网接口的帧的非常基本的信息。我有一个套接字定义为

if ((sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == -1) return __LINE__;
strcpy(ifr.ifr_name, argv[1]);
if (ioctl(sd, SIOCGIFFLAGS, &ifr) == -1) return __LINE__;
ifr.ifr_flags |= IFF_PROMISC;
if (ioctl(sd, SIOCSIFFLAGS, &ifr) == -1) return __LINE__;
if (ioctl(sd, SIOCGIFINDEX, &ifr) == -1) return __LINE__;
Run Code Online (Sandbox Code Playgroud)

我像这样循环输入

while (active) {
        FD_SET(sd, &fds);
        FD_SET(STDIN_FILENO, &fds);
        if ((rv = select(sd + 1, &fds, NULL, NULL, &tv)) < 0)
            active = 0;
        if (FD_ISSET(sd, &fds)) input(sd, buf);
Run Code Online (Sandbox Code Playgroud)

这就是我遇到问题的地方。我定义了每个帧都被投射到的以太网标头struct

struct ethheader {
    unsigned char       dsta[6];
    unsigned char       srca[6];
    uint16_t …
Run Code Online (Sandbox Code Playgroud)

c sockets typedef raw-sockets

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

我可以用比特来定义C元素的大小吗?

在以下示例中,我可以用位定义C元素的大小吗?

#include <stdio.h>

typedef enum {
    false = 0,
    true = ~0
} bool;

int main(void) {
    bool x;
    printf("%d", sizeof x);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c

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