小编sep*_*p2k的帖子

C-gcc:没有使用不同的函数声明/实现的编译器警告

我试图弄清楚为什么我的C编译器使用以下(简化的)代码不会给我任何警告/错误。

函数声明没有参数,而函数实现则具有参数:

some.h:

void foo();

some.c:

static uint32_t count = 0; 

void foo(uint32_t num) {
    count += num;
    print("Count: %u");
}
Run Code Online (Sandbox Code Playgroud)

main.c:

foo(100);
foo();
Run Code Online (Sandbox Code Playgroud)

输出:

Count: 100
Count: 100
Run Code Online (Sandbox Code Playgroud)

用于目标构建的编译器:

gcc-arm-none-eabi-4_9-2015q1-20150306-win32
Run Code Online (Sandbox Code Playgroud)

用于目标构建的链接器:

gcc-arm-none-eabi-4_9-2015q1-20150306-win32
Run Code Online (Sandbox Code Playgroud)

编译器标志:

-Wall -Werror -DuECC_CURVE=uECC_secp256r1 -DMEMORY_CHECK -DDEBUG -Os -g3 -DBACKTRACE

c gcc declaration

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

何时赋予在C#中有效的ref参数?

假设一个方法正在改变通过引用传递的参数的值.在整个应用程序中或仅在方法返回后,此操作的效果是否立即可见?

下面是一个重要的例子:

int x = 0;
void Foo(ref int y)
{
    ++y;
    Console.WriteLine(x);
}
Foo(ref x);
Run Code Online (Sandbox Code Playgroud)

它可以在http://csharppad.com/gist/915318e2cc0da2c2533dfa7983119869下的C#Pad中运行

该函数Foo可以访问变量,x因为它在同一范围内,并且恰好在调用站点接收对它的引用.如果效果++y是立即的,那么输出应该是1,但我可以想象一个编译器生成代码,例如,将本地值存储在寄存器中,并在返回之前的某个时间转储到内存中.语言规范是否确保输出1是否允许抖动优化,使输出实现依赖?

c# optimization jit semantics

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

Haskell不从getLine返回

出于某种原因,我机器上的Haskell永远不会从任何getLine调用返回.例如,我尝试直接从Learn Your a Haskell for Great Good运行以下代码:

main = do  
    putStrLn "Hello, what's your name?"  
    name <- getLine  
    putStrLn ("Hey " ++ name ++ ", you rock!")  
Run Code Online (Sandbox Code Playgroud)

当我运行它时,第一行被打印,当我输入一个名字时,我看到了我的输入,但是当我按下Enter键时,程序只是阻塞那里并且从不打印最后一行.

我该怎么解决这个问题?

编辑:我从Sublime IDE运行它,也许这与它有关

haskell sublimetext

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

类型检查和范围检查

在我正在阅读的其中一本教科书中说"在编译时检查类型的兼容性,子范围需要运行时范围检查." 如果我说得对,那么当将新值分配给在某个子范围(子类型)中定义的变量时,必须执行运行时检查.类型不一样吗?为何如此区别?这只是编译器的默认值吗?

types ada

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

intel编译器忽略了大循环?

所有:

我有一个非常简单的C测试代码,使用英特尔编译器为浮点运算的大循环做一些计时,代码(test.c)如下:

#include <sys/time.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <omp.h>

int main(char *argc, char **argv) {
      const long N = 1000000000;
      double t0, t1, t2, t3;
      double sum=0.0;
      clock_t start, end;
      struct timeval r_start, r_end;
      long i;
      gettimeofday(&r_start, NULL);
      start = clock();
      for (i=0;i<N;i++)
          sum += i*2.0+i/2.0; // doing some floating point operations
      end = clock();
      gettimeofday(&r_end, NULL);
      double cputime_elapsed_in_seconds = (end - start)/(double)CLOCKS_PER_SEC;
      double realtime_elapsed_in_seconds = ((r_end.tv_sec * 1000000 + r_end.tv_usec)
                - (r_start.tv_sec …
Run Code Online (Sandbox Code Playgroud)

c for-loop intel timing

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

在 Maven 构建期间增加 scala 堆栈大小

使用 maven (mvncompile) 编译 scala 项目时,出现错误:java.lang.StackOverflowError。我也从 Eclipse 中得到了相同的结果,但可以通过提供附加命令行参数来解决它: -J-Xss256m for scala compiler ,如此处给出的How to raise scala stack size

但我在执行“mvn编译”时遇到同样的错误。我该如何解决这个问题?基本上如何在通过 Maven 构建时增加 scala 堆栈大小

scala stack-size maven

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

X Macro生成杂散运算符

我尝试创建一个宏来定义X,但08和09被编译器误解为杂散运算符.当其他人工作正常时,为什么这些失败?

#define LIST_TEST_X \
    X(A,01)\
    X(B,02)\
    X(C,03)\
    X(D,04)\
    X(E,05)\
    X(F,06)\
    X(G,07)\
    X(H,08)\
    X(I,09)\
    X(K,10)

enum XEnum
{
#define X(A, b)  A=b,
    LIST_TEST_X
#undef X
};
Run Code Online (Sandbox Code Playgroud)

c++ macros

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

来自Matheab的Mathematica配色方案

我正在使用MatLab绘制我的数据,现在我有兴趣从中Mathematica获取颜色方案,因为那些MatLab实际上并不是最好的.

有没有办法导入它们MatLab

如果没有,有没有办法让类似的配色方案,如DarkRainbow彩虹MatLab?(我讨厌喷气机,MatLab因为一个人看不到黄线)

matlab color-scheme wolfram-mathematica colors

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

在函数内部定义的Python编译器和常量

Python编译器是否可以识别在函数中定义的常量,这样,无论随后在代码中调用该函数多少次,它仅计算一次它们的值?

例如,

def f():
    x = [ 1, 2, 3, 4 ]
    # stuff

for i in range( 100 ):
    f()
Run Code Online (Sandbox Code Playgroud)

x重新计算100次f()调用吗?

并非总是可以在使用常量的函数之外定义常量,我很好奇Python是否在这种情况下得到了支持。

python performance compiler-optimization

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

C++ 如何确定这应该是 string_view?

考虑以下代码:

#include <optional>
#include <string_view>

int main() {
    std::optional<std::string_view> opt { "abc" };
    std::cout << opt.value();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它编译并在运行时将“abc”输出到控制台。为什么要编译?main 中的第一行代码应该是:

std::optional<std::string_view> { std::string_view { "abc" } };
Run Code Online (Sandbox Code Playgroud)

编译器如何知道使用文字调用 string_view 构造函数?这似乎不仅仅是我以前见过的类型推导。这里似乎编译器正在向我的源代码添加代码,即对构造函数的调用。

c++ local auto type-deduction

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