小编Kei*_*h M的帖子

LNK4075:由于'/ OPT:ICF'规范而忽略'/ EDITANDCONTINUE'

我最近转换了一个多项目Visual Studio解决方案,为每个项目使用.dlls而不是.libs.但是,我现在获得了每个项目的链接器警告,如示例中所述.MSDN并没有对此有所帮助.为什么这样,我该如何解决?

警告2警告LNK4075:由于'/ OPT:ICF'规范LudoCamera.obj而忽略'/ EDITANDCONTINUE'

c++ dll linker visual-studio linker-warning

35
推荐指数
3
解决办法
5万
查看次数

获取计算机名称和记录的用户名

我正在开发一个应用程序.其中一种方法需要捕获计算机名称和登录计算机的用户,然后向用户显示.我需要它在Windows和Linux上运行.做这个的最好方式是什么?

c++ linux windows

16
推荐指数
6
解决办法
4万
查看次数

Ada:获取用户对String(1..10)的输入并用空格填充其余部分

我已经定义了

subtype String10 is String(1..10);
Run Code Online (Sandbox Code Playgroud)

我试图获得键盘输入,而无需在输入之前手动输入空格.我尝试了get_line()但是由于某些原因它在输出get put()命令之前实际上不会等待输入,而且我也认为它会在那之前留下字符串中的内容并且不用空格填充它.

我知道并使用了Bounded_String和Unbounded_String,但我想知道是否有办法使这项工作.

我试过为它做一个函数:

--getString10--
procedure getString10(s : string10) is
   c : character;
   k : integer;
begin
   for i in integer range 1..10 loop
      get(c);
      if Ada.Text_IO.End_Of_Line = false then
         s(i) := c;
      else
         k := i;
         exit;
      end if;
   end loop;

   for i in integer range k..10 loop
      s(i) := ' ';
   end loop;
end getString10;
Run Code Online (Sandbox Code Playgroud)

但是,在这里,我知道这s(i)不起作用,我不认为

"if Ada.Text_IO.End_Of_Line = false then" 
Run Code Online (Sandbox Code Playgroud)

做我希望它会做什么.它只是一个占位符,而我正在寻找实际的方法.

我一直在搜索几个小时,但是Ada文档不像其他语言那样可用或清晰.我找到了很多关于获取字符串的内容,但不是我正在寻找的内容.

string input ada

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

什么是C++中的DBL_MAX?

我正在查看我在网上找到的一个程序,我发现作者在少数情况下使用了DBL_MAX.我不确定它是什么,所以我研究了一下,但没有太多解释它是什么以及它用于什么.

任何人都可以解释它是什么以及为什么要使用它?

代码中使用的一些示例是:

localT.maxTemp = -DBL_MAX;
double avg = -DBL_MAX;
Run Code Online (Sandbox Code Playgroud)

c++ floating-point max

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

使用SIOCSIFADDR ioctl设置IP地址

我试图在Linux上使用IOCTL接口获取和设置IP地址.我成功地得到并设置它.当我设置IP地址时,会 ifconfig eth0显示正确的IP地址,但系统会断开连接.即系统不可ping.这是我设置IP地址的代码.如果我错过了什么,请告诉我.

struct ifreq ifr;
in_addr_t in_addr;
struct sockaddr_in sin;

memset(&ifr, 0, sizeof(struct ifreq));
memset(&sin, 0, sizeof(struct sockaddr_in));
sockfd = socket(AF_INET, SOCK_STREAM, 0);
sprintf(ifr.ifr_name, "eth0");
in_addr = inet_addr("192.168.101.17");
sin.sin_addr.s_addr = in_addr;
memcpy(&ifr.ifr_addr, &sin, sizeof(struct sockaddr));
io = ioctl(sockfd, SIOCSIFADDR, (char *)&ifr);
Run Code Online (Sandbox Code Playgroud)

c ip ioctl ip-address

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

非静态数据成员的 cppreference 定义错误吗?

来自cppreference 的定义:

非静态数据成员是在类的成员规范中声明的变量。

他们有这样的例子:

S级
{
   内部& r; // 引用类型的非静态数据成员
};

但是我们知道非静态数据成员引用不是变量,因为标准:

§3/6:变量是由非静态数据成员或对象以外的引用声明引入的。

那么他们对非静态数据成员的定义是错误的(他们忘记了这个异常)?我在哪里可以找到术语“非静态数据成员”的正确定义?

不幸的是,我在 C++ 标准中找不到非静态数据成员的定义。

编辑:从cppreference 对象定义和下面的讨论我们可以得出结论,非静态数据成员根本不是对象。并且cppreference 非静态成员页面更正了当前讨论的定义。

c++ language-lawyer

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

使用C中的JNI从对象获取对象

public class Student
{
   private People people;
   private Result result;
   private int amount;
}
Run Code Online (Sandbox Code Playgroud)

这是Java中类的示例; 在C中,我试图让"学生"中的"人",但我失败了.但是,我可以从"学生"获得int类型"金额".

jobject getObjectFromObject(JNIEnv *env, jobject obj, const char * fieldName)
{
    jfieldID fid; /* store the field ID */
    jobject i;

    /* Get a reference to obj's class */
    jclass cls = (*env)->GetObjectClass(env, obj);

    /* Look for the instance field s in cls */
    fid = (*env)->GetFieldID(env, cls, fieldName, "L");
    if (fid == NULL)
    {
        return 0; /* failed to find the field */
    } …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface native

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

用比特场包装bools(C++)

我正在尝试使用C++与Ada代码进行交互,因此我使用位字段定义结构,以便所有数据在两种语言中都处于相同的位置.以下不是我正在做的,但概述了问题.以下也是VS2008中的控制台应用程序,但这不是超级相关的.

using namespace System;
int main() {
    int array1[2] = {0, 0};
    int *array2 = new int[2]();
    array2[0] = 0;
    array2[1] = 0;

    #pragma pack(1)
    struct testStruct {
        // Word 0 (desired)
        unsigned a : 8;
        unsigned b : 1;
        bool c : 1;
        unsigned d : 21;
        bool e : 1;

        // Word 1 (desired)
        int f : 32;

        // Words 2-3 (desired)
        int g[2]; //Cannot assign bit field but takes 64 bits in my compiler
    };
    testStruct test; …
Run Code Online (Sandbox Code Playgroud)

c++ struct pragma pack bit-fields

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

如何在 Zsh 中使用浮点数“延迟”?

在 Zsh 中,有一个wait(针对进程或作业)命令、一个while(秒 == 延迟)命令和一个sched(如果 shell 仍在运行,请稍后执行)命令,但没有“延迟”命令。如果有的话,我担心这将仅限于整整一秒的延迟。我需要一个“延迟”语句,它本质上可以导致过程/任务在固定点数指定的时间内或直到某个时钟时间几乎不执行任何操作。

大多数脚本会使用“睡眠”,但我希望延迟计时器运行而不必打开 IO;我正在寻求一个理想,即几乎任何事情都可以在 Zsh 中完成。

有谁知道如何使一个函数(或者可能是内置/模块)在几秒钟内执行浮点空闲延迟?

linux shell sleep zsh

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

我是否错误地使用了fscanf?

我在C中进行一些编码以进行分配,并遇到了一个奇怪的问题.我将以下内容保存在txt文件中:

11
1 1 0 1 0 0 0 1 0 0 0 
0 1 1 0 1 0 0 0 1 0 0 
0 0 1 1 0 1 0 0 0 1 0 
0 0 0 1 1 0 1 0 0 0 1 
1 0 0 0 1 1 0 1 0 0 0 
0 1 0 0 0 1 1 0 1 0 0 
0 0 1 0 0 0 1 1 0 1 0 
0 …
Run Code Online (Sandbox Code Playgroud)

c file scanf matrix

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

设置const char*是否等于char [] literal安全?

我在一些C++代码中发现了这个:

const char *scaryPointer = "literal";
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这不会生成编译器警告或错误(至少在Visual Studio 2008中).

这样做真的安全吗?我认为在该行完成执行后,char [] literal的地址将无效.

如果它是安全的,如果你重新分配scaryPointer给新文字会发生什么?旧文字的地址会自动释放吗?自动垃圾收集?

我发现了这个问题,但(我认为)问题/答案没有完全解决我的问题和疑虑.

c++ string

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

如何在C++中分配`#input`类型的宏字符串?

这是怎么样的后续问题的我的老问题之一在这里.我找到了一些像这样的代码:

#define TYPESUPPORT(T)              \
...                                 \
static const char* get_type_name()  \
{                                   \
    return #T;                      \
}                                   \
...
Run Code Online (Sandbox Code Playgroud)

T变量类型在哪里(例如int).#T用于获取宏输入的纯文本名称.

这样做安全吗?如在,如何#T分配?是否为每个宏调用或其他东西分配一个const char*const char[]字符串文字,就像在我的第一个问题中一样?

c++ string macros

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