在perl.xml控制编辑器突出显示的文件中,我发现了一个名为 的编译指示english。在文档中我只找到了一个名为 的内置模块English,但没有找到englishpragma。该条目是english错误还是这是某种遗留问题?
使用具有以下架构的SQLite3 :
CREATE TABLE Customers(ID INTEGER PRIMARY KEY, Company TEXT NOT NULL UNIQUE, Country TEXT NOT NULL, City TEXT NOT NULL);
CREATE TABLE Orders(ID INTEGER PRIMARY KEY, CustomerID INTEGER NOT NULL, FOREIGN KEY(CustomerID) REFERENCES Customers(ID) ON DELETE RESTRICT ON UPDATE RESTRICT);
Run Code Online (Sandbox Code Playgroud)
并发出此命令:
PRAGMA foreign_key_list(Orders);
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
0|0|Customers|CustomerID|ID|RESTRICT|RESTRICT|NONE
Run Code Online (Sandbox Code Playgroud)
由于文档没有说明此编译指示的输出的含义,除了明显的(客户- 父表、客户 ID - 子键、ID - 父键、RESTRICT - ON DELETE 和第二个RESTRICT - ON UPDATE)之外,我认为NONE对应于不支持的 MATCH 子句。
我自己无法弄清楚的是前两个零的含义。有人能告诉我那是什么吗?
我试图了解 OMP 如何处理不同的for循环声明。我有:
int main()
{
int i, A[10000]={...};
double ave = 0.0;
#pragma omp parallel for reduction(+:ave)
for(i=0;i<10000;i++){
ave += A[i];
}
ave /= 10000;
printf("Average value = %0.4f\n",ave);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
其中{...}是从 1 到 10000 的数字。此代码打印正确的值。#pragma omp parallel for reduction(+:ave)如果我使用is#pragma omp parallel for private(ave)的结果代替。我想我明白什么是,但想知道它是否可以替代以及如何替代。printf0.0000reduction(oper:list)private
module Practice where
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
class TooMany a where
tooMany :: a -> Bool
instance TooMany Int where
tooMany n = n > 42
newtype Goats =
Goats Int deriving (Eq, Show)
--What I load into the playground
tooMany (Goats 17)
--the error I get: " No instance for (TooMany Goats) arising from a use of ‘tooMany’ "
Run Code Online (Sandbox Code Playgroud)
我相信这段代码应该可以工作,但不能工作,因为我使用的是 Haskell For Mac,它可能对编译指示使用不同的符号。
假设我想确保实现接口的人具有特定的实验性功能,
package Foo {
use experimental "signatures";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法确定 Foo 启用了哪些功能,或者更具体地说是“实验性功能”?
帮我找出我尝试编译 glibc 2.24 时出现的错误,但出现以下错误:
./../include/libc-symbols.h:413:26: error: '__EI___errno_location' specifies less restrictive attributes than its target '__errno_location': 'const', 'nothrow' [-Werror=missing-attributes]
| 413 | extern __typeof (name) __EI_##name \
| | ^~~~~
| ./../include/libc-symbols.h:417:29: note: in expansion of macro '__hidden_ver1'
| 417 | # define hidden_def(name) __hidden_ver1(__GI_##name, name, name);
| | ^~~~~~~~~~~~~
| ./../include/libc-symbols.h:468:32: note: in expansion of macro 'hidden_def'
| 468 | # define libc_hidden_def(name) hidden_def (name)
| | ^~~~~~~~~~
| errno-loc.c:28:1: note: in expansion of macro 'libc_hidden_def'
| 28 | libc_hidden_def …Run Code Online (Sandbox Code Playgroud) 为什么-XImplicitParams从命令行工作而不是OPTIONS_GHC pragma?
我发现ghc t.hs抛出一个parse error on input 'a'if t.hs包含以下代码,同时ghc -XImplicitParams t.hs工作正常.同上ghci.
{- OPTIONS_GHC -XImplicitParams -}
f :: (?a :: Int) => Int -> Int
f b = ?a + b
g c = f $ c+1
Run Code Online (Sandbox Code Playgroud) 我有一个循环引用的问题(即啊和Bh #including彼此),有些人建议我使用#pragma一次来防止这种情况.但是,此解决方案似乎仍然无效.
发生的事情是A类不再在Ah以外的任何文件中被识别(甚至不在A.cpp中),B类也是如此.
我来告诉你代码:
啊
#pragma once
#include "B.h"
class A {
public: B* b;
};
Run Code Online (Sandbox Code Playgroud)
BH
#pragma once
#include "A.h"
class B {
public: A* a;
};
Run Code Online (Sandbox Code Playgroud)
A.cpp
#include "stdafx.h"
#include "A.h"
#include "B.h"
Run Code Online (Sandbox Code Playgroud)
B.cpp与A.cpp相同
错误跟踪如下:
1> B.cpp 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C2143:语法错误:缺少';' 在' '1>之前c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - 假定为int.注意:C++不支持default-int 1> A.cpp 1> c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C2143:语法错误:缺少';' 在' '1> 之前 c:\ users\user\documents\visual studio 2010\projects\envmodel\test\bh(5):错误C4430:缺少类型说明符 - …
我在整个代码中都使用了此代码:
#pragma message "FIXME: this needs to be fixed"
Run Code Online (Sandbox Code Playgroud)
我希望这些警告消息仅对启用它们的用户显示。我以为我会为此写一个宏,例如:
#ifdef SHOW_DEVELOPER_MESSAGES
#define DEVELOPER_MESSAGE(msg) _Pragma("message " ## msg)
#endif
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
DEVELOPER_MESSAGE("TEST: -- xxxx --")
Run Code Online (Sandbox Code Playgroud)
但这导致以下错误:
Pasting formed '"message ""TEST: -- xxxxx --"', an invalid preprocessing token
Run Code Online (Sandbox Code Playgroud)
我已经阅读了C / C ++宏字符串连接并尝试使用它,但是我无法使其正常工作。我在想这样做必须使消息必须像这样用转义的引号引起来(这种工作方式我只是不知道如何创建像这样的转义的字符串来与_Pragma一起使用):
_Pragma("message \"THIS is the actual message!\"")
Run Code Online (Sandbox Code Playgroud)
如何创建打印出编译指示消息的宏(或类似的解决方案)?
解决方案应该是单线的,将每一个实用信息#ifdef SHOW_DEVELOPER_MESSAGES都包含在内,这将违背此练习的目的。
奖励问题:如何更改宏以为不同的消息类型创建不同的变体,例如:
DEVELOPER_FIXME("bug")
Run Code Online (Sandbox Code Playgroud)
它总是与FIXME前缀字符串到形式:"FIXME: bug"。
我有一个C主文件,其中包括此.h文件:
#pragma pack(1)
#ifndef PACKAGE
#define PACKAGE
struct A {
uint8_t a;
uint8_t b;
uint64_t c;
} typedef A;
#endif
Run Code Online (Sandbox Code Playgroud)
编译警告后:
myfile.c:28:10: warning: the current #pragma pack alignment value is modified in
the included file [-Wpragma-pack]
#include "structures.h"
^
./structures.h:1:9: note: previous '#pragma pack' directive that modifies
alignment is here
#pragma pack(1)
Run Code Online (Sandbox Code Playgroud)
出现。
我不明白我的代码有什么问题。有什么办法可以删除此警告?
这是一个完整的示例:
这是一个名为“ myfile.c”的简单C文件:
#include "structures.h"
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是一个名为“ structures.h”的.h文件:
#include <stdlib.h>
#include <stdio.h>
#pragma pack(1)
#ifndef PACKAGE
#define PACKAGE
struct A {
uint8_t …Run Code Online (Sandbox Code Playgroud) 在我用C#编写的以下程序中:
static void Main(string[] args)
{
paramsAndOptionalTest(1,2);
#pragma region CmdLineStuff
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine("{0}", args[i]);
}
foreach (string arg in args)
{
Console.WriteLine(arg);
}
string[] apiargs = Environment.GetCommandLineArgs();//this will give the executable name and path too
int exitCode = Environment.ExitCode;
foreach (string arg in apiargs)
{
Console.WriteLine(arg);
}
Console.WriteLine("Exit Code {0}", exitCode);
string myString = string.Format("11 in hexa is {0:x}", 11);
System.Windows.MessageBox.Show(myString);
#pragma endregion CmdLineStuff
ImmutableStrings();
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
我使用了#pragma区域.但是我得到了CS1633:无法识别的#pragma指令警告.所以我认为C#编译器不能识别这个Pragma,因为在C++中它工作得很好.在C#中有没有等效的pragma?
我一直在尝试处理有关编译单元的问题。
我得到的错误是
1>frtinvxml.obj : error LNK2005: "struct repFieldInfo det_rep_info" (?det_rep_info@@3UrepFieldInfo@@A) already defined in Frtinv.obj
1>frtinvxml.obj : error LNK2005: "struct repFieldInfo frt_rep_info" (?frt_rep_info@@3UrepFieldInfo@@A) already defined in Frtinv.obj
1>frtinvxml.obj : error LNK2005: "struct FormToolbar * tb" (?tb@@3PAUFormToolbar@@A) already defined in Frtinv.obj
1>frtinvxml.obj : error LNK2005: "struct tagDATE_STRUCT dateFrom" (?dateFrom@@3UtagDATE_STRUCT@@A) already defined in Frtinv.obj
... (It goes on for every variable and method in the header...)
Run Code Online (Sandbox Code Playgroud)
这是我得到的唯一错误。以下是所涉及的每个相应类的包含,按从树上最高到最低的顺序...
***Frtinv.hxx***
#pragma once
#include <voyage.ddh>
#include <vsched.ddh>
# ...
struct frtinvType : public frtinv_type
{
int …Run Code Online (Sandbox Code Playgroud)