在N4296::13.3.3 [over.match.best]中给出了以下示例
namespace A
{
extern "C" void f(int = 5);
}
namespace B
{
extern "C" void f(int = 5);
}
using A::f;
using B::f;
void use()
{
f(3); // OK, default argument was not used for viability
f(); // Error: found default argument t
C++编译器通常会损坏函数名以支持许多特性。编程人员可以使用外部的"C"方式来抑制默认的名称损坏。然而,为什么int main(int, char **)从来不受影响?
// test.cpp
int max(int a, int b) {
return a > b ? a : b;
}
extern "C" {
int min(int a, int b) {
return a < b ? a : b;
}
}
int main (int argc, char *argv[]) {
return
我正在阅读Scott C++,现在我在有关封装的部分。他说,除非宣布他们是私有的,否则就没有办法把数据公之于众。这很清楚。
但是,由于我来自Java,有它的package-private方法和成员,所以我感兴趣的是,C++是否允许我们在名称空间中声明某些方法,从而使它在名称空间之外不可访问。命名空间-私密之类的。我认为使用匿名命名空间的代码是可以的:
namespace A {
namespace { //anonymous namespace within the namespace
int a;
}
void foo(){ std::cout <
我仍然是C#的新手,我想知道哪些元素是C#独有的,哪些元素是.Net框架独有的。
关键字、运算符、编译器、编译器错误和预处理器指令是C#本身的唯一成员吗?C#是否还有其他成员,或者之前的一些成员是否属于.Net框架?
此外,在控制台应用程序中,下列命名空间是否用于包含.Net框架成员?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
在C#中,如果我创建了一个没有命名空间的类,那么在尝试实例化该类时,我将使用什么命名空间?
例如,假设main是...
namespace NamespaceTests
{
class Program
{
static void Main(string[] args)
{
}
}
}
..。假设我的没有命名空间的类是...
public class test
{
public string SayHello()
{
return "Hello World!";
}
我正在读关于的文章,他们有一些代码,我不知道名字查找的顺序偏好。
我读过关于,和的文章。我还试着在其他网站上搜索。
如果有更多的文件你认为我应该读,请建议他们。
他们的代码如下:
不要花太多时间阅读这段代码,因为我将在下面讨论我的适应版本。
namespace A {
int i;
}
namespace B {
int i;
int j;
namespace C {
namespace D {
using namespace A; // all names from A injected into global name
我在C++和Java方面有多年的经验,但我对C#还是新手。
最近,当我正在读一本关于C#的书时,他们把下面的内容描述为名称空间,我发现它很有用。根据我在C++中的知识,这些实际上是pre-processor directives。
using System; //A book called these as namespace
using System.Collections.Generic; //A book called these as namespace
using System.Text; //A book
我想知道为什么在下面的代码中找不到名称空间filesystem:
g++ -std=c++17 main.cpp -lstdc++
// #include <filesystem> <- error, so changed to the following:
#include <experimental/filesystem>
namespace fs = std::filesystem;
int main()
{
return 0;
}
错误:
main.cpp:3:21: error: ‘filesystem’ is not a nam
我在一个库中创建了一个小的C#类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace helloWorldLib
{
public class Greeter
{
public string SayHelloWorld(string name)
{
return "Hello world " + name;
}
}
}
该库位于
C:\Doc
在ASP.NET C#应用程序中,我注意到为了使用Regex和StringBuilder,我必须同时使用
using System.Text;
using System.Text.RegularExpressions;
从简单的角度来看,我认为using System.Text可能包括RegularExpressions,但两者都是必要的。那两个有什么区别呢?
我听说有人断言,在C++中使用未命名的命名空间来定义函数并确保不能从定义它们的编译单元外部调用它们,这在非常大的代码环境中是不好的,因为它们会导致符号表变得不必要地变大,因为在C++编译器提供的自动生成的命名空间中包含这些符号的条目。
namespace {
// This function can only be accessed from hear to the end of
// any compilation unit that includes it.
void functionPerhapsInsertedIntoSymbolTable() {
return;