问题标签 [language-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
473 浏览

c# - 什么是__argvalue?

此外,还有另一件事是 VC# 中的左值,尽管它是一种语言扩展 - __argvalue()。

来源

这是唯一的谷歌搜索结果__argvalue

我在 LINQPad 中尝试过,它似乎不存在。

0 投票
3 回答
760 浏览

c - 存在哪些 C GNU 主义?

我最近将一个项目从 GCC 移植到 clang(我在其中修复了一些 C GNU 主义)。这让我想到:存在哪些 C GNU 主义(GCC 支持的 C 语言扩展,未标准化)?任何地方都有完整的清单吗?

0 投票
4 回答
4791 浏览

c - 哪些可用的 GNU C 扩展在 C99 中实现并不容易?

为什么Linux内核只能用GCC编译?某些项目真正需要哪些 GNU C 扩展,为什么?

0 投票
5 回答
1414 浏览

c++ - 在 C++ 中使所有类型默认为常量

无论是通过编译器选项、#defines、typedefs 还是模板,每次我说T我的意思时,向编译器指示的最简单和最不突兀的方式是T const什么?我宁愿不使用外部预处理器。由于我不使用mutable关键字,因此可以接受将其重新用于指示可变状态。

编辑:由于这样做的意图完全是错误的(并且由于我没有几个小时来澄清),让我解释一下。本质上,我只想知道哪些系统可用于在编译时操作类型系统。我不在乎这是否会创建非标准、糟糕、不可维护、无用的代码。我不会在生产中使用它。这只是一种好奇心。

迄今为止的潜在(次优)解决方案:

0 投票
4 回答
32181 浏览

c++ - C++ 模块 - 为什么从 C++0x 中删除它们?他们以后会回来吗?

我刚刚发现了这个关于 C++0x 中模块的旧 C++0x 草案。

这个想法是通过只编写 .cpp 文件来摆脱当前的 .h/.cpp 系统,然后在编译期间生成模块文件,然后再由其他 .cpp 文件使用。

这看起来是一个非常棒的功能。

但我的问题是:他们为什么将它从 C++0x 中删除?是不是因为技术难度太大?时间不够?你认为他们会考虑为 C++ 的别有用心版本而工作吗?

0 投票
2 回答
884 浏览

c++ - 在其 .h 文件包含在多个 cpp 文件中的类中定义整数静态常量

编译器向我发出警告,说 b 被定义了多次,其中一个被忽略了。我需要在类中定义它,因为我需要初始化数组。或者,我需要使用枚举方法来做到这一点。但我想知道这是否可能?

0 投票
4 回答
4647 浏览

c++ - 将大括号包围的块放置在预期表达式的位置的 C++ 语法是什么?

我遇到了这个奇怪的 C++ 程序。

谁能解释发生了什么?这个结构叫什么?

0 投票
2 回答
7251 浏览

haskell - 最新 GHC 中不推荐使用 DatatypeContexts:为什么?

我只是在做一些 Haskell 开发,并在新版本的 GHC 上重新编译了一些旧代码:

当我这样做时,我收到以下错误:

警告:-XDatatypeContexts 已被弃用:它被广泛认为是一个错误功能,并已从 Haskell 语言中删除。

当您有以下格式的代码时,就会出现这种情况:

我的问题是:为什么这个功能首先被弃用,我应该做些什么来实现相同或相似的功能?

0 投票
7 回答
3163 浏览

c++ - 如何在 C++ 中(计算)goto 和 longjmp?

我通常不编写 C++ 代码,但我的一个奇怪的 comp sci 朋友厌倦了看我精彩的 FORTRAN 程序并挑战我用 C++ 重写其中一个,因为他更喜欢我的 C++ 代码。(我们在这里赌钱。)确切的说法是它需要在现代 C++ 编译器中可编译。也许他讨厌一个好的conio.h - 我不知道。

现在我意识到用 C++ 编写有很多非常好的方法,但是我要在这里通过尝试使我的 C++ 版本尽可能像 FORTRAN 式来获得个人胜利。对于奖励积分,这可能会在我转换代码时为我节省一些时间和精力。

所以!这使我想到以下相关查询:

在 goto 上:

  1. 你是如何工作的?
  2. C++ 中 goto 的限制是什么?
  3. 对范围有任何担忧吗?(我将尽可能地尝试全局范围,但你永远不知道。)
  4. 如果我使用 GCC 扩展转到 void 指针数组,是否有关于未定义行为等的新问题?


在 longjmp 上:

  1. 您将如何安全地使用 longjmp?
  2. C++ 中 longjmps 的限制是什么?
  3. 它对范围有什么作用?
  4. 是否有任何特定时刻看起来 longjmp 应该是安全的,但实际上我不应该提防?
  5. 如何使用 longjmp 模拟计算的 goto?
  6. 如果我的程序中只有一个函数,那么使用 longjmp 而不是 goto 有什么切实的好处吗?

现在我主要关心的是为此计算 goto 工作。看起来我可能会使用 longjmp 来完成这项工作,因为 void 指针数组不是 C++ 标准的一部分,而是 GCC 特定的扩展。

0 投票
2 回答
1241 浏览

c# - 实现 C# 语言扩展

使用Parallel Linq等系统,可以将匿名函数、查询等的执行拆分到单个机器内的多个内核和线程上。我希望能够使用标准语言结构(如 for 循环(如Parallel.For())、值类型(如ints、structs 等)等)将其扩展为在多台机器上运行,并将应用程序源修改保持在最低限度。理想情况下,这将允许我打开一个项目,向方法添加一个属性,然后重新编译以访问增强的功能。

看来我需要一些类似的东西:

  1. 捕获已编译的代码块(例如 lambda)并将其传递给在另一个节点上运行的工作进程以及所需的任何数据的能力,或者

  2. 提供一个预处理器来捕获有问题的代码,在一种模板项目中编译它,将变量引用等替换为对处理网络通信、缓存和访问任何其他所需资产的类的引用,然后发送生成的 DLL 到其他机器上运行的任何可用工作节点。

Roslyn似乎提供了一些在这里有用的工具。有没有办法连接到当前的编译管道以允许这样做?

编辑

好吧,我知道这是可能的,因为这些人做到了。问题是,如何