我的宏观办法只针对静态的当地变量(因为它使用在线组装通知来提取变量数据)。 我需要一种办法,强制实施对宏观的投入确实是一个静态的地方变量:
correct:
func f()
{
static int x;
my_macro(x);
}
不正确:
func f()
{
int x;
my_macro(x);
}
我与海湾合作委员会合作(C++)。
我的宏观办法只针对静态的当地变量(因为它使用在线组装通知来提取变量数据)。 我需要一种办法,强制实施对宏观的投入确实是一个静态的地方变量:
correct:
func f()
{
static int x;
my_macro(x);
}
不正确:
func f()
{
int x;
my_macro(x);
}
我与海湾合作委员会合作(C++)。
你们可以 following:
#define ASSERT_LOCAL_STATIC(v) static void *p_ ## v = &v
void fn()
{
int nonstatic_var = 0;
static int static_var = 0;
ASSERT_LOCAL_STATIC(static_var);
ASSERT_LOCAL_STATIC(nonstatic_var);
}
GCC issues an error "initializer element is not constant" for non-static variables.
You might be able to tell static and local variables apart by using their addresses:
Static variables are stored in either the .BSS or .DATA sections
Local variables are stored in the stack
For example the output of the following program on my system
#include <stdio.h>
void f0() {
int x = 0;
printf("%p
", &x);
}
void f1() {
static int x = 0;
printf("%p
", &x);
}
int main() {
f0();
f1();
return 0;
}
is this:
0x7fff1dc718dc
0x600900
#include <stdio.h>
#define check(var) {
int ___ = 0;
printf("%s (%p): %s
", #var, &var, (&var > &___)?"local":"static");
}
void f0() {
int x = 0;
check(x);
}
void f1() {
static int y = 0;
check(y);
}
int main() {
f0();
f1();
return 0;
}
产出:
x (0x7fff4b965afc): local
y (0x600978): static
警告:我不建议使用这一“骗局”。 所有这一切是:一种trick,一种在最不合适的情况下打破的.。 正确记录你的宏观,让使用它的人们处理滥用的后果。
简言之,大多数C图书馆使用: 用户说,你的宏观工程对静态变量和任何其他行为可能不明确/不投机。
就像你一样,也可以通过国家扫盲委员会(NUL)的联络点来strdup(
等,这将产生任何结果,只能导致在那里发生的ault事件,不会产生一个大问题,而不会执行。
For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...
最好、最小、最快、开放的来源、C/C++ 3d 提供方(在3ds max模型的支持下),而不是通用公平市价,
Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...
I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...
I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...
I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...
Is there anything other than DDD that will draw diagrams of my data structures like DDD does that runs on Linux? ddd is okay and runs, just kind of has an old klunky feeling to it, just wanted to ...
Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...